35 #ifndef IECOREGL_GROUP_H
36 #define IECOREGL_GROUP_H
38 #include "IECoreGL/Export.h"
39 #include "IECoreGL/Renderable.h"
41 #include "OpenEXR/ImathMatrix.h"
43 #include "tbb/recursive_mutex.h"
50 IE_CORE_FORWARDDECLARE( State );
52 class IECOREGL_API Group :
public Renderable
57 typedef tbb::recursive_mutex Mutex;
58 typedef std::list<RenderablePtr> ChildContainer;
60 IE_CORE_DECLARERUNTIMETYPEDEXTENSION( IECoreGL::Group, GroupTypeId, Renderable );
67 Group(
const Group &other );
70 void setTransform(
const Imath::M44f &matrix );
71 const Imath::M44f &getTransform()
const;
74 const State *getState()
const;
75 void setState( StatePtr state );
78 void render( State *currentState )
const override;
79 Imath::Box3f bound()
const override;
81 void addChild( RenderablePtr child );
82 void removeChild( Renderable *child );
84 const ChildContainer &children()
const;
94 Imath::M44f m_transform;
95 ChildContainer m_children;
96 mutable Mutex m_mutex;
100 IE_CORE_DECLAREPTR( Group );
104 #endif // IECOREGL_GROUP_H
The namespace within which all CoreGL functionality is defined.
Definition: AlphaTexture.h:41