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_ |