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 +}