ld33_umonster
annotate src/scene.cc @ 0:4a6683050e29
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 22 Aug 2015 07:15:00 +0300 |
parents | |
children | 35349df5392d |
rev | line source |
---|---|
nuclear@0 | 1 #include "scene.h" |
nuclear@0 | 2 #include "opengl.h" |
nuclear@0 | 3 #include "opt.h" |
nuclear@0 | 4 #include "game.h" |
nuclear@0 | 5 |
nuclear@0 | 6 static int max_lights = -1; |
nuclear@0 | 7 |
nuclear@0 | 8 Scene::~Scene() |
nuclear@0 | 9 { |
nuclear@0 | 10 clear(); |
nuclear@0 | 11 } |
nuclear@0 | 12 |
nuclear@0 | 13 void Scene::clear() |
nuclear@0 | 14 { |
nuclear@0 | 15 for(size_t i=0; i<objects.size(); i++) { |
nuclear@0 | 16 delete objects[i]; |
nuclear@0 | 17 } |
nuclear@0 | 18 objects.clear(); |
nuclear@0 | 19 |
nuclear@0 | 20 for(size_t i=0; i<lights.size(); i++) { |
nuclear@0 | 21 delete lights[i]; |
nuclear@0 | 22 } |
nuclear@0 | 23 lights.clear(); |
nuclear@0 | 24 } |
nuclear@0 | 25 |
nuclear@0 | 26 void Scene::add_object(Object *obj) |
nuclear@0 | 27 { |
nuclear@0 | 28 objects.push_back(obj); |
nuclear@0 | 29 } |
nuclear@0 | 30 |
nuclear@0 | 31 void Scene::add_lights(Light *lt) |
nuclear@0 | 32 { |
nuclear@0 | 33 lights.push_back(lt); |
nuclear@0 | 34 } |
nuclear@0 | 35 |
nuclear@0 | 36 void Scene::draw(unsigned int flags) const |
nuclear@0 | 37 { |
nuclear@0 | 38 if(max_lights == -1) { |
nuclear@0 | 39 glGetIntegerv(GL_MAX_LIGHTS, &max_lights); |
nuclear@0 | 40 printf("max lights: %d\n", max_lights); |
nuclear@0 | 41 } |
nuclear@0 | 42 |
nuclear@0 | 43 for(size_t i=0; i<lights.size(); i++) { |
nuclear@0 | 44 lights[i]->setup(i); |
nuclear@0 | 45 } |
nuclear@0 | 46 |
nuclear@0 | 47 for(size_t i=0; i<objects.size(); i++) { |
nuclear@0 | 48 unsigned int mask = objects[i]->rop.transparent ? DRAW_TRANSPARENT : DRAW_SOLID; |
nuclear@0 | 49 if(mask & flags) { |
nuclear@0 | 50 if(dbg_wireframe) { |
nuclear@0 | 51 objects[i]->draw_wire(); |
nuclear@0 | 52 } else { |
nuclear@0 | 53 objects[i]->draw(); |
nuclear@0 | 54 } |
nuclear@0 | 55 } |
nuclear@0 | 56 } |
nuclear@0 | 57 } |