- virtual void render(const Tag & = Tag()) const;
- virtual void render(Renderer &, const Tag & = Tag()) const;
+ /** Returns the model matrix of the Renderable. Null is returned if no such
+ matrix exists. The matrix should be in world space for some effects to work
+ correctly. */
+ virtual const Matrix *get_matrix() const { return 0; }
+
+ /** Returns a bounding sphere that completely encloses the Renderable. The
+ bounding sphere is expressed in the renderable's coordinates. Null is
+ returned if the bounding sphere cannot be determined. */
+ virtual const Geometry::BoundingSphere<float, 3> *get_bounding_sphere() const { return 0; }
+
+ /** Called when starting to render a new frame. */
+ virtual void setup_frame(Renderer &) { }
+
+ /** Called when a complete frame has been rendered. */
+ virtual void finish_frame() { }
+
+ /** Renders the Renderable. Implementors should take care to return the
+ renderer to the state it was in, for example by using Renderer::Push. */
+ virtual void render(Renderer &, const Tag & = Tag()) const = 0;