+
+ 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 unsigned get_n_link_slots() const { return 0; }
+ virtual Object *get_link(unsigned) const;
+ virtual int get_link_slot(const Object &) const { return -1; }
+ virtual bool link_to(Object &) { return false; }
+ virtual bool break_link(Object &);
+ virtual bool break_link(unsigned) { return false; }
+ virtual void break_links();
+
+ const Shape *get_shape() const;
+ virtual bool collide_ray(const Ray &, float * = 0) const;
+ virtual BoundingBox get_bounding_box() const;