X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fobject.h;h=a0bd4f362714313bd72c5bc28b7c120bfd4f119f;hb=68877070660f2806cc2a7f0ccb69153059ef6ce7;hp=8ce521ab5366df54375973e3db4715e11cc0c81e;hpb=b88d3630a0e3fdd763db018bbe5dbfe3180a95f2;p=r2c2.git diff --git a/source/libr2c2/object.h b/source/libr2c2/object.h index 8ce521a..a0bd4f3 100644 --- a/source/libr2c2/object.h +++ b/source/libr2c2/object.h @@ -11,12 +11,17 @@ class Layout; class Object { +public: + sigc::signal signal_moved; + protected: Layout &layout; Vector position; - float rotation; + Angle rotation; + Angle tilt; + Shape *shape; - Object(Layout &l): layout(l) { } + Object(Layout &); public: virtual ~Object() { } @@ -24,9 +29,11 @@ public: virtual const ObjectType &get_type() const = 0; Layout &get_layout() const { return layout; } virtual void set_position(const Vector &) = 0; - virtual void set_rotation(float) = 0; + virtual void set_rotation(const Angle &) = 0; + virtual void set_tilt(const Angle &) = 0; const Vector &get_position() const { return position; } - float get_rotation() const { return rotation; } + const Angle &get_rotation() const { return rotation; } + const Angle &get_tilt() const { return tilt; } virtual Object *get_parent() const { return 0; } virtual unsigned get_n_snap_nodes() const { return 0; } @@ -37,7 +44,17 @@ 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; + 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; }; } // namespace R2C2