tavli
annotate src/snode.h @ 24:0aadb519b5ee
correct highlighting
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 08 Jul 2015 15:11:58 +0300 |
parents | |
children |
rev | line source |
---|---|
nuclear@3 | 1 #ifndef SNODE_H_ |
nuclear@3 | 2 #define SNODE_H_ |
nuclear@3 | 3 |
nuclear@3 | 4 #include <vector> |
nuclear@3 | 5 #include "object.h" |
nuclear@3 | 6 #include "vmath/vmath.h" |
nuclear@3 | 7 #include "geom.h" |
nuclear@3 | 8 |
nuclear@3 | 9 class SceneNode { |
nuclear@3 | 10 private: |
nuclear@3 | 11 Vector3 pos; |
nuclear@3 | 12 Quaternion rot; |
nuclear@3 | 13 Vector3 scale; |
nuclear@3 | 14 |
nuclear@3 | 15 std::vector<Object*> obj; |
nuclear@3 | 16 |
nuclear@3 | 17 SceneNode *parent; |
nuclear@3 | 18 std::vector<SceneNode*> children; |
nuclear@3 | 19 |
nuclear@3 | 20 Matrix4x4 xform; |
nuclear@3 | 21 Matrix4x4 inv_xform; |
nuclear@3 | 22 |
nuclear@3 | 23 public: |
nuclear@3 | 24 SceneNode(); |
nuclear@3 | 25 explicit SceneNode(Object *obj); |
nuclear@3 | 26 |
nuclear@3 | 27 void add_child(SceneNode *node); |
nuclear@3 | 28 bool remove_child(SceneNode *node); |
nuclear@3 | 29 |
nuclear@3 | 30 int get_num_children() const; |
nuclear@3 | 31 SceneNode *get_child(int idx) const; |
nuclear@3 | 32 |
nuclear@3 | 33 SceneNode *get_parent() const; |
nuclear@3 | 34 |
nuclear@3 | 35 void add_object(Object *obj); |
nuclear@3 | 36 int get_num_objects() const; |
nuclear@3 | 37 Object *get_object(int idx) const; |
nuclear@3 | 38 |
nuclear@3 | 39 void set_position(const Vector3 &pos); |
nuclear@3 | 40 void set_rotation(const Quaternion &rot); |
nuclear@3 | 41 void set_scaling(const Vector3 &scale); |
nuclear@3 | 42 |
nuclear@3 | 43 const Vector3 &get_node_position() const; |
nuclear@3 | 44 const Quaternion &get_node_rotation() const; |
nuclear@3 | 45 const Vector3 &get_node_scaling() const; |
nuclear@3 | 46 |
nuclear@3 | 47 Vector3 get_position() const; |
nuclear@3 | 48 Quaternion get_rotation() const; |
nuclear@3 | 49 Vector3 get_scaling() const; |
nuclear@3 | 50 |
nuclear@3 | 51 const Matrix4x4 &get_matrix() const; |
nuclear@3 | 52 const Matrix4x4 &get_inv_matrix() const; |
nuclear@3 | 53 |
nuclear@3 | 54 void update_node(long msec = 0); |
nuclear@3 | 55 void update(long msec = 0); |
nuclear@3 | 56 |
nuclear@3 | 57 bool intersect(const Ray &ray, HitPoint *hit) const; |
nuclear@3 | 58 }; |
nuclear@3 | 59 |
nuclear@3 | 60 #endif // SNODE_H_ |