7 #include "gmath/gmath.h"
19 std::vector<Object*> obj;
22 std::vector<SceneNode*> children;
27 mutable bool bvol_valid;
31 Scene *scene; // scene to which this node belongs
35 explicit SceneNode(Object *obj);
38 void set_name(const char *s);
39 const char *get_name() const;
41 void add_child(SceneNode *node);
42 bool remove_child(SceneNode *node);
44 int get_num_children() const;
45 SceneNode *get_child(int idx) const;
47 SceneNode *get_parent() const;
49 void add_object(Object *obj);
50 bool remove_object(Object *obj);
52 int get_num_objects() const;
53 Object *get_object(int idx) const;
55 void set_position(const Vec3 &pos);
56 void set_rotation(const Quat &rot);
57 void set_scaling(const Vec3 &scale);
59 const Vec3 &get_node_position() const;
60 const Quat &get_node_rotation() const;
61 const Vec3 &get_node_scaling() const;
63 Vec3 get_position() const;
64 Quat get_rotation() const;
65 Vec3 get_scaling() const;
67 const Mat4 &get_matrix() const;
68 const Mat4 &get_inv_matrix() const;
70 void update_node(float dt = 0.0f);
71 void update(float dt = 0.0f);
75 bool intersect(const Ray &ray, HitPoint *hit) const;
77 const Box &calc_bounds();
78 const Box &get_bounds() const;