erebus

annotate liberebus/src/snode.h @ 1:59a72293f9bd

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