+#ifndef R2C2_3D_VEHICLEPART_H_
+#define R2C2_3D_VEHICLEPART_H_
+
+#include <msp/gl/objectinstance.h>
+#include "vehicle.h"
+
+namespace R2C2 {
+
+class Vehicle3D;
+
+class VehiclePart3D: public Msp::GL::ObjectInstance
+{
+protected:
+ const Vehicle3D &vehicle;
+ Msp::GL::Matrix matrix;
+
+ VehiclePart3D(const Vehicle3D &, const Msp::GL::Object &);
+
+public:
+ virtual void update_matrix() = 0;
+
+ virtual void render(Msp::GL::Renderer &, const Msp::GL::Tag &) const;
+ virtual void setup_render(Msp::GL::Renderer &, const Msp::GL::Tag &) const;
+};
+
+} // namespace R2C2
+
+#endif