Cutout Vis2012
TUWienVisualisierung2(SS2012)-AdaptiveCutaways
 All Classes Namespaces Functions Pages
SceneNode.h
1 #ifndef _SCENENODE_H_
2 #define _SCENENODE_H_
3 
4 #include "Transform.h"
5 #include "IdentityTransform.h"
6 #include "Transformable.h"
7 #include <list>
8 
9 class Scene;
10 
15 class SceneNode
16 {
17 public:
18  friend class Scene;
19 
23  SceneNode(Scene* scene);
24  ~SceneNode();
25 
29  void addSceneNode(SceneNode* sceneNode);
33  void removeSceneNode(SceneNode* sceneNode);
37  void removeFromParent();
41  void removeAllSceneNodes();
42 
46  void addTransformable(Transformable* transformable);
50  void removeTransformable(Transformable* transformable);
55 
59  void setTransform(Transform* transform);
67  const glm::mat4& getTotalTransform() const;
71  float getTotalScale();
72 
77 
78  const std::list<SceneNode*>& getChildNodes() const;
79  const std::list<Transformable*>& getTransformables() const;
80 
81 private:
82  Scene* _scene;
83 
84  std::list<SceneNode*> _childNodes;
85  SceneNode* _parentNode;
86 
87  std::list<Transformable*> _transformables;
88  Transform* _transform;
89  float _totalScale;
90  glm::mat4 _totalTransform;
91 
92  void propagateTransform(const glm::mat4& inhTransform, float inhScale);
93 
94  static IdentityTransform _identity;
95 };
96 
97 
98 
99 #endif _SCENENODE_H_