erebus

annotate liberebus/src/scene.h @ 40:9d6368850fe1

minor enhancements and bugfixes to the console stuff
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 10 Jun 2014 10:53:19 +0300
parents 6204e4d3f445
children 2e817711d0f6
rev   line source
nuclear@2 1 #ifndef SCENE_H_
nuclear@2 2 #define SCENE_H_
nuclear@2 3
nuclear@19 4 #include <stdio.h>
nuclear@2 5 #include <vector>
nuclear@2 6 #include "snode.h"
nuclear@2 7 #include "camera.h"
nuclear@8 8 #include "color.h"
nuclear@8 9
nuclear@8 10 struct Environment {
nuclear@8 11 Color bgcolor;
nuclear@8 12 Color ambient;
nuclear@8 13 // TODO map & image-based lighting
nuclear@8 14
nuclear@8 15 Environment();
nuclear@8 16 };
nuclear@2 17
nuclear@2 18 class Scene {
nuclear@2 19 private:
nuclear@8 20 Environment env;
nuclear@8 21
nuclear@2 22 std::vector<Object*> objects;
nuclear@2 23 std::vector<SceneNode*> nodes;
nuclear@2 24
nuclear@4 25 SceneNode *root;
nuclear@4 26
nuclear@2 27 Camera *active_cam;
nuclear@2 28
nuclear@2 29 public:
nuclear@2 30 Scene();
nuclear@2 31 ~Scene();
nuclear@2 32
nuclear@40 33 void clear();
nuclear@40 34
nuclear@8 35 void set_env(const Environment &env);
nuclear@8 36 Environment &get_env();
nuclear@8 37 const Environment &get_env() const;
nuclear@8 38
nuclear@8 39 Color get_env_color() const;
nuclear@8 40 Color get_env_color(const Ray &ray) const;
nuclear@8 41
nuclear@2 42 void add_object(Object *obj);
nuclear@2 43 int get_object_count() const;
nuclear@2 44 Object *get_object(int idx) const;
nuclear@2 45
nuclear@2 46 void add_node(SceneNode *node);
nuclear@2 47 int get_node_count() const;
nuclear@2 48 SceneNode *get_node(int idx) const;
nuclear@2 49
nuclear@4 50 void use_camera(Camera *cam);
nuclear@4 51 Camera *get_active_camera() const;
nuclear@4 52
nuclear@4 53 void update(long msec = 0);
nuclear@4 54
nuclear@2 55 bool intersect(const Ray &ray, RayHit *hit) const;
nuclear@4 56
nuclear@4 57 bool load(const char *fname);
nuclear@19 58 bool load(FILE *fp);
nuclear@19 59
nuclear@19 60 bool proc_cmd(int argc, char **argv);
nuclear@2 61 };
nuclear@2 62
nuclear@2 63 #endif // SCENE_H_