X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Flayout.h;h=dd3c0f5ea9b150bd54f5340743961dd4fe3187ad;hb=05b95b6b6b095821f1e79dabed802b853c296c9d;hp=908751a27be6cafa29584c2d7982e290fbd512e6;hpb=4049f5bdacfdb61247f3c74fc5f748990be7bd4d;p=r2c2.git diff --git a/source/3d/layout.h b/source/3d/layout.h index 908751a..dd3c0f5 100644 --- a/source/3d/layout.h +++ b/source/3d/layout.h @@ -8,10 +8,12 @@ #include #include "libr2c2/layout.h" #include "catalogue.h" +#include "typemap.h" namespace R2C2 { class Object3D; +class Utility3D; class Layout3D: public sigc::trackable { @@ -22,6 +24,7 @@ private: Layout &layout; Catalogue3D catalogue; ObjectMap objects; + std::set utilities; Msp::GL::InstanceScene scene; Msp::GL::SimpleScene ep_scene; Msp::GL::InstanceScene path_scene; @@ -33,17 +36,21 @@ public: ~Layout3D(); Layout &get_layout() const { return layout; } + Catalogue3D &get_catalogue() { return catalogue; } const Catalogue3D &get_catalogue() const { return catalogue; } void get_bounds(Vector &, Vector &) const; void add(Object3D &); - Object3D &get(Object &) const; + Object3D &get_3d(Object &) const; const ObjectMap &get_all() const { return objects; } void remove(Object3D &); template - T &get(Object &o) const - { return dynamic_cast(get(o)); } + typename TypeMap3D::Type3D &get_3d(T &o) const + { return dynamic_cast::Type3D &>(get_3d(static_cast(o))); } + + void add(Utility3D &); + void remove(Utility3D &); Msp::GL::Scene &get_scene() { return scene; } Msp::GL::Scene &get_endpoint_scene() { return ep_scene; }