-/* $Id$
+#ifndef R2C2_3D_OBJECT_H_
+#define R2C2_3D_OBJECT_H_
-This file is part of the MSP Märklin suite
-Copyright © 2010 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
+#include <sigc++/trackable.h>
+#include <msp/gl/matrix.h>
+#include "libr2c2/geometry.h"
+#include "libr2c2/object.h"
-#ifndef MARKLIN3D_OBJECT_H_
-#define MARKLIN3D_OBJECT_H_
+namespace R2C2 {
-#include "libmarklin/geometry.h"
+class Layout3D;
-namespace Marklin {
-
-class Object3D
+class Object3D: public sigc::trackable
{
protected:
- Object3D() { }
+ Layout3D &layout;
+ Object &object;
+ Msp::GL::Matrix matrix;
+
+ Object3D(Layout3D &, Object &);
public:
- virtual ~Object3D() { }
+ virtual ~Object3D();
- virtual Point get_node() const = 0;
+ Layout3D &get_layout() const { return layout; }
+ Object &get_object() const { return object; }
+
+ const Msp::GL::Matrix &get_matrix() const { return matrix; }
+ virtual Vector get_node() const = 0;
virtual bool is_visible() const = 0;
+protected:
+ virtual void moved();
};
-} // namespace Marklin
+} // namespace R2C2
#endif