]> git.tdb.fi Git - libs/gl.git/commitdiff
Add a method of getting the model matrix of a Renderable
authorMikko Rasa <tdb@tdb.fi>
Mon, 3 Sep 2012 15:58:31 +0000 (18:58 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 3 Sep 2012 20:07:10 +0000 (23:07 +0300)
This can be used for various position-dependent rendering techniques, such
as certain effects and frustum culling.

source/animatedobject.h
source/effect.h
source/renderable.h

index df0b15ebe04e2f6cc6d91090ba60292c14a66adb..6bcd37ce4b609dbecadece72bfc336bc75317827 100644 (file)
@@ -26,6 +26,8 @@ public:
        void set_matrix(const Matrix &);
        void set_pose_matrix(unsigned, const Matrix &);
 
+       virtual const Matrix *get_matrix() const { return &matrix; }
+
        virtual void setup_render(Renderer &, const Tag &) const;
 };
 
index 7eeae682dffb00d593601b94e9eca82735a23f2e..7c943ae6ef297f2a80cef9fc8d640fedd19b721e 100644 (file)
@@ -24,6 +24,8 @@ public:
 
        void enable_for_pass(const Tag &);
        void disable_for_pass(const Tag &);
+
+       virtual const Matrix *get_matrix() const { return renderable.get_matrix(); }
 };
 
 } // namespace GL
index 2342ae288cfed9b4d8fa61f25bf932ae47058540..3432a87ee77ed4db3c72600061127bef767c768d 100644 (file)
@@ -7,6 +7,7 @@
 namespace Msp {
 namespace GL {
 
+class Matrix;
 class Renderer;
 
 /**
@@ -27,6 +28,10 @@ public:
        returned value is treated as opaque. */
        virtual long get_instance_key() const { return 0; }
 
+       /** Returns the model matrix of the Renderable.  Null is returned if no such
+       matrix exists. */
+       virtual const Matrix *get_matrix() const { return 0; }
+
        /** Renders the renderable without a renderer.  This can be convenient in
        some simple cases, but most renderables don't need to implement this
        method. */