1 #ifndef MSP_GL_PLACEABLE_H_
2 #define MSP_GL_PLACEABLE_H_
5 #include "renderable.h"
11 A base class for things that can be positioned and oriented in 3D space.
18 Placeable() = default;
20 virtual ~Placeable() = default;
22 virtual void set_matrix(const Matrix &);
24 /** Returns the Placeable's matrix. This function returns a pointer for
25 compatibility with Renderable. The returned pointer is never null. */
26 virtual const Matrix *get_matrix() const { return &matrix; }
31 An intermediate base class combining the functionality of Renderable and
34 class PlacedRenderable: public Renderable, public Placeable
37 PlacedRenderable() = default;
40 /* Reimplement to clear ambiguity between Renderable and Placeable. This
41 overrides both base classes' implementations. */
42 virtual const Matrix *get_matrix() const { return &matrix; }