tavli

annotate src/snode.h @ 3:94aff2ff1934

too much?
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 22 Jun 2015 21:46:57 +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_