]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/object.h
Add a generic snapping interface in Object
[r2c2.git] / source / libr2c2 / object.h
index 206ec336d8e1cb99b1dd26f9dad09ea9bd3907a3..8ce521ab5366df54375973e3db4715e11cc0c81e 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "geometry.h"
 #include "objecttype.h"
+#include "snap.h"
 
 namespace R2C2 {
 
@@ -27,6 +28,15 @@ public:
        const Vector &get_position() const { return position; }
        float get_rotation() const { return rotation; }
        virtual Object *get_parent() const { return 0; }
+
+       virtual unsigned get_n_snap_nodes() const { return 0; }
+       virtual Snap get_snap_node(unsigned) const;
+       virtual bool snap(Snap &, float, SnapType = SNAP_DEFAULT) const;
+       virtual bool snap_to(const Object &, float, SnapType = SNAP_DEFAULT);
+protected:
+       virtual SnapType get_default_snap_type_to(const Object &) const { return NO_SNAP; }
+
+public:
        virtual bool collide_ray(const Vector &, const Vector &) const = 0;
 };