ld33_umonster

annotate src/snode.h @ 0:4a6683050e29

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