rayzor

annotate src/scene.cc @ 8:fcd06a15dfdd

added missing set_mouse_limits to dosemu.c
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 07 Apr 2014 08:46:06 +0300
parents 5fcf72837b69
children d94a69933a71
rev   line source
nuclear@5 1 #include <string.h>
nuclear@1 2 #include "scene.h"
nuclear@1 3
nuclear@1 4 Scene::Scene()
nuclear@1 5 {
nuclear@1 6 name = 0;
nuclear@6 7 active_cam = 0;
nuclear@1 8 }
nuclear@1 9
nuclear@1 10 Scene::~Scene()
nuclear@1 11 {
nuclear@1 12 clear();
nuclear@1 13 }
nuclear@1 14
nuclear@1 15 void Scene::clear()
nuclear@1 16 {
nuclear@1 17 delete [] name;
nuclear@1 18
nuclear@1 19 size_t i;
nuclear@1 20 for(i=0; i<objects.size(); i++) {
nuclear@1 21 delete objects[i];
nuclear@1 22 }
nuclear@1 23 for(i=0; i<lights.size(); i++) {
nuclear@1 24 delete lights[i];
nuclear@1 25 }
nuclear@1 26 for(i=0; i<cameras.size(); i++) {
nuclear@1 27 delete cameras[i];
nuclear@1 28 }
nuclear@1 29 }
nuclear@1 30
nuclear@1 31 void Scene::set_name(const char *name)
nuclear@1 32 {
nuclear@1 33 delete [] this->name;
nuclear@1 34 this->name = new char[strlen(name) + 1];
nuclear@1 35 strcpy(this->name, name);
nuclear@1 36 }
nuclear@1 37
nuclear@1 38 const char *Scene::get_name() const
nuclear@1 39 {
nuclear@1 40 return name ? name : "<unknown>";
nuclear@1 41 }
nuclear@1 42
nuclear@6 43 void Scene::add_object(Object *obj)
nuclear@6 44 {
nuclear@6 45 objects.push_back(obj);
nuclear@6 46 }
nuclear@6 47
nuclear@6 48 void Scene::add_light(Light *lt)
nuclear@6 49 {
nuclear@6 50 lights.push_back(lt);
nuclear@6 51 }
nuclear@6 52
nuclear@6 53 void Scene::add_camera(Camera *cam)
nuclear@6 54 {
nuclear@6 55 cameras.push_back(cam);
nuclear@6 56 }
nuclear@6 57
nuclear@6 58
nuclear@6 59 int Scene::get_object_count() const
nuclear@6 60 {
nuclear@6 61 return (int)objects.size();
nuclear@6 62 }
nuclear@6 63
nuclear@6 64 int Scene::get_light_count() const
nuclear@6 65 {
nuclear@6 66 return (int)lights.size();
nuclear@6 67 }
nuclear@6 68
nuclear@6 69 int Scene::get_camera_count() const
nuclear@6 70 {
nuclear@6 71 return (int)cameras.size();
nuclear@6 72 }
nuclear@6 73
nuclear@6 74
nuclear@6 75 Object *Scene::get_object(int idx)
nuclear@6 76 {
nuclear@6 77 return objects[idx];
nuclear@6 78 }
nuclear@6 79
nuclear@6 80 const Object *Scene::get_object(int idx) const
nuclear@6 81 {
nuclear@6 82 return objects[idx];
nuclear@6 83 }
nuclear@6 84
nuclear@6 85 Light *Scene::get_light(int idx)
nuclear@6 86 {
nuclear@6 87 return lights[idx];
nuclear@6 88 }
nuclear@6 89
nuclear@6 90 const Light *Scene::get_light(int idx) const
nuclear@6 91 {
nuclear@6 92 return lights[idx];
nuclear@6 93 }
nuclear@6 94
nuclear@6 95 Camera *Scene::get_camera(int idx)
nuclear@6 96 {
nuclear@6 97 return cameras[idx];
nuclear@6 98 }
nuclear@6 99
nuclear@6 100 const Camera *Scene::get_camera(int idx) const
nuclear@6 101 {
nuclear@6 102 return cameras[idx];
nuclear@6 103 }
nuclear@6 104
nuclear@1 105 void Scene::draw() const
nuclear@1 106 {
nuclear@6 107 if(active_cam) {
nuclear@6 108 // TODO
nuclear@6 109 }
nuclear@6 110
nuclear@6 111 int nobj = get_object_count();
nuclear@6 112 for(int i=0; i<nobj; i++) {
nuclear@6 113 objects[i]->draw();
nuclear@6 114 }
nuclear@1 115 }