erebus

annotate liberebus/src/snode.h @ 3:a932848de652

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 28 Apr 2014 15:44:59 +0300
parents 474a0244f57d
children 93894c232d65
rev   line source
nuclear@2 1 #ifndef SNODE_H_
nuclear@2 2 #define SNODE_H_
nuclear@2 3
nuclear@2 4 #include <vector>
nuclear@2 5 #include "object.h"
nuclear@2 6 #include "vmath/vmath.h"
nuclear@2 7
nuclear@2 8 class SceneNode {
nuclear@2 9 private:
nuclear@2 10 Vector3 pos;
nuclear@2 11 Quaternion rot;
nuclear@2 12 Vector3 scale;
nuclear@2 13
nuclear@2 14 std::vector<Object*> obj;
nuclear@2 15
nuclear@2 16 SceneNode *parent;
nuclear@2 17 std::vector<SceneNode*> children;
nuclear@2 18
nuclear@3 19 Matrix4x4 xform;
nuclear@3 20 Matrix4x4 inv_xform;
nuclear@2 21
nuclear@2 22 public:
nuclear@2 23 void add_child(SceneNode *node);
nuclear@2 24 bool remove_child(SceneNode *node);
nuclear@2 25
nuclear@2 26 int get_num_children() const;
nuclear@2 27 SceneNode *get_child(int idx) const;
nuclear@2 28
nuclear@2 29 void set_position(const Vector3 &pos);
nuclear@2 30 void set_rotation(const Quaternion &rot);
nuclear@2 31 void set_scaling(const Vector3 &scale);
nuclear@2 32
nuclear@2 33 const Vector3 &get_node_position() const;
nuclear@2 34 const Quaternion &get_node_rotation() const;
nuclear@2 35 const Vector3 &get_node_scaling() const;
nuclear@2 36
nuclear@2 37 Vector3 get_position() const;
nuclear@2 38 Quaternion get_rotation() const;
nuclear@2 39 Vector3 get_scaling() const;
nuclear@2 40
nuclear@3 41 const Matrix4x4 &get_matrix() const;
nuclear@3 42 const Matrix4x4 &get_inv_matrix() const;
nuclear@3 43
nuclear@2 44 void update_node(long msec = 0);
nuclear@2 45 void update(long msec = 0);
nuclear@2 46
nuclear@2 47 bool intersect(const Ray &ray, RayHit *hit) const;
nuclear@2 48 };
nuclear@2 49
nuclear@2 50 #endif // SNODE_H_