eqemu

view src/scene.cc @ 3:f9274bebe55e

adding 3d graphics stuff
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 17 Jul 2014 02:35:19 +0300
parents
children 3d3656360a82
line source
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "scene.h"
5 Scene::~Scene()
6 {
7 for(size_t i=0; i<objects.size(); i++) {
8 delete objects[i];
9 }
10 for(size_t i=0; i<meshes.size(); i++) {
11 delete meshes[i];
12 }
13 }
15 bool Scene::load(const char *fname)
16 {
17 FILE *fp = fopen(fname, "rb");
18 if(!fp) {
19 fprintf(stderr, "failed to open scene file: %s\n", fname);
20 return false;
21 }
23 bool res = load_obj(fp);
24 fclose(fp);
25 return res;
26 }
28 void Scene::add_object(Object *obj)
29 {
30 objects.push_back(obj);
31 }
33 void Scene::add_mesh(Mesh *mesh)
34 {
35 meshes.push_back(mesh);
36 }
38 int Scene::get_num_objects() const
39 {
40 return (int)objects.size();
41 }
43 int Scene::get_num_meshes() const
44 {
45 return (int)meshes.size();
46 }
48 Object *Scene::get_object(int idx) const
49 {
50 return objects[idx];
51 }
53 Mesh *Scene::get_mesh(int idx) const
54 {
55 return meshes[idx];
56 }
58 void Scene::update(long msec)
59 {
60 }
62 void Scene::render() const
63 {
64 for(size_t i=0; i<objects.size(); i++) {
65 objects[i]->render();
66 }
67 }