erebus
diff liberebus/src/scene.cc @ 4:93894c232d65
more changes across the board
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 29 Apr 2014 07:38:40 +0300 |
parents | 59a72293f9bd |
children | e2d9bf168a41 |
line diff
1.1 --- a/liberebus/src/scene.cc Mon Apr 28 15:44:59 2014 +0300 1.2 +++ b/liberebus/src/scene.cc Tue Apr 29 07:38:40 2014 +0300 1.3 @@ -1,51 +1,77 @@ 1.4 -#include "scene.h" 1.5 - 1.6 -Scene::Scene() 1.7 -{ 1.8 - active_cam = 0; 1.9 -} 1.10 - 1.11 -Scene::~Scene() 1.12 -{ 1.13 - for(auto obj : objects) { 1.14 - delete obj; 1.15 - } 1.16 - for(auto node : nodes) { 1.17 - delete node; 1.18 - } 1.19 -} 1.20 - 1.21 -void Scene::add_object(Object *obj) 1.22 -{ 1.23 - objects.push_back(obj); 1.24 -} 1.25 - 1.26 -int Scene::get_object_count() const 1.27 -{ 1.28 - return (int)objects.size(); 1.29 -} 1.30 - 1.31 -Object *Scene::get_object(int idx) const 1.32 -{ 1.33 - return objects[idx]; 1.34 -} 1.35 - 1.36 -void Scene::add_node(SceneNode *node) 1.37 -{ 1.38 - nodes.push_back(node); 1.39 -} 1.40 - 1.41 -int Scene::get_node_count() const 1.42 -{ 1.43 - return (int)nodes.size(); 1.44 -} 1.45 - 1.46 -SceneNode *Scene::get_node(int idx) const 1.47 -{ 1.48 - return nodes[idx]; 1.49 -} 1.50 - 1.51 -bool Scene::intersect(const Ray &ray, RayHit *hit) const 1.52 -{ 1.53 - 1.54 -} 1.55 \ No newline at end of file 1.56 +#include "scene.h" 1.57 + 1.58 +Scene::Scene() 1.59 +{ 1.60 + active_cam = 0; 1.61 + root = new SceneNode; 1.62 +} 1.63 + 1.64 +Scene::~Scene() 1.65 +{ 1.66 + for(auto obj : objects) { 1.67 + delete obj; 1.68 + } 1.69 + for(auto node : nodes) { 1.70 + delete node; 1.71 + } 1.72 + delete root; 1.73 +} 1.74 + 1.75 +void Scene::add_object(Object *obj) 1.76 +{ 1.77 + objects.push_back(obj); 1.78 +} 1.79 + 1.80 +int Scene::get_object_count() const 1.81 +{ 1.82 + return (int)objects.size(); 1.83 +} 1.84 + 1.85 +Object *Scene::get_object(int idx) const 1.86 +{ 1.87 + return objects[idx]; 1.88 +} 1.89 + 1.90 +void Scene::add_node(SceneNode *node) 1.91 +{ 1.92 + nodes.push_back(node); 1.93 + 1.94 + if(!node->get_parent()) { 1.95 + root->add_child(node); 1.96 + } 1.97 +} 1.98 + 1.99 +int Scene::get_node_count() const 1.100 +{ 1.101 + return (int)nodes.size(); 1.102 +} 1.103 + 1.104 +SceneNode *Scene::get_node(int idx) const 1.105 +{ 1.106 + return nodes[idx]; 1.107 +} 1.108 + 1.109 +void Scene::use_camera(Camera *cam) 1.110 +{ 1.111 + active_cam = cam; 1.112 +} 1.113 + 1.114 +Camera *Scene::get_active_camera() const 1.115 +{ 1.116 + return active_cam; 1.117 +} 1.118 + 1.119 +void Scene::update(long msec) 1.120 +{ 1.121 + root->update(msec); 1.122 +} 1.123 + 1.124 +bool Scene::intersect(const Ray &ray, RayHit *hit) const 1.125 +{ 1.126 + return root->intersect(ray, hit); 1.127 +} 1.128 + 1.129 +bool Scene::load(const char *fname) 1.130 +{ 1.131 + return false; // TODO 1.132 +}