rayzor
annotate src/scene.h @ 21:8c4859442200
foo
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 15 Apr 2014 20:52:05 +0300 |
parents | 6b11a3f8706e |
children |
rev | line source |
---|---|
nuclear@1 | 1 #ifndef SCENE_H_ |
nuclear@1 | 2 #define SCENE_H_ |
nuclear@1 | 3 |
nuclear@21 | 4 #include <stdio.h> |
nuclear@1 | 5 #include <string> |
nuclear@21 | 6 #include "vector.h" |
nuclear@13 | 7 #include "snode.h" |
nuclear@1 | 8 #include "object.h" |
nuclear@1 | 9 #include "light.h" |
nuclear@1 | 10 #include "camera.h" |
nuclear@17 | 11 #include "raytrace.h" |
nuclear@17 | 12 |
nuclear@17 | 13 enum { SCN_BG_LOW, SCN_BG_MID, SCN_BG_HIGH }; |
nuclear@1 | 14 |
nuclear@1 | 15 class Scene { |
nuclear@1 | 16 private: |
nuclear@1 | 17 char *name; |
nuclear@12 | 18 vector<SceneNode*> nodes; |
nuclear@12 | 19 |
nuclear@1 | 20 vector<Object*> objects; |
nuclear@1 | 21 vector<Light*> lights; |
nuclear@1 | 22 vector<Camera*> cameras; |
nuclear@6 | 23 Camera *active_cam; |
nuclear@1 | 24 |
nuclear@17 | 25 Vector3 bg[3]; |
nuclear@17 | 26 Vector3 ambient; |
nuclear@17 | 27 float fog_exp; |
nuclear@17 | 28 |
nuclear@12 | 29 vector<int> sel; |
nuclear@12 | 30 |
nuclear@1 | 31 public: |
nuclear@1 | 32 Scene(); |
nuclear@1 | 33 ~Scene(); |
nuclear@1 | 34 |
nuclear@1 | 35 void clear(); |
nuclear@1 | 36 |
nuclear@1 | 37 void set_name(const char *name); |
nuclear@1 | 38 const char *get_name() const; |
nuclear@1 | 39 |
nuclear@17 | 40 void set_background(const Vector3 &col, int idx = -1); |
nuclear@17 | 41 const Vector3 &get_background(int idx = -1) const; |
nuclear@17 | 42 Vector3 get_background(const Ray &ray) const; |
nuclear@17 | 43 |
nuclear@17 | 44 void set_ambient(const Vector3 &col); |
nuclear@17 | 45 const Vector3 &get_ambient() const; |
nuclear@17 | 46 |
nuclear@12 | 47 void add(SceneNode *node); |
nuclear@6 | 48 |
nuclear@12 | 49 int get_node_count() const; |
nuclear@6 | 50 int get_object_count() const; |
nuclear@6 | 51 int get_light_count() const; |
nuclear@6 | 52 int get_camera_count() const; |
nuclear@6 | 53 |
nuclear@12 | 54 SceneNode *get_node(int idx); |
nuclear@12 | 55 const SceneNode *get_node(int idx) const; |
nuclear@6 | 56 Object *get_object(int idx); |
nuclear@6 | 57 const Object *get_object(int idx) const; |
nuclear@6 | 58 Light *get_light(int idx); |
nuclear@6 | 59 const Light *get_light(int idx) const; |
nuclear@6 | 60 Camera *get_camera(int idx); |
nuclear@6 | 61 const Camera *get_camera(int idx) const; |
nuclear@6 | 62 |
nuclear@15 | 63 void set_active_camera(Camera *cam); |
nuclear@15 | 64 Camera *get_active_camera() const; |
nuclear@15 | 65 |
nuclear@1 | 66 void draw() const; |
nuclear@12 | 67 |
nuclear@12 | 68 void select(int s); |
nuclear@12 | 69 void clear_selection(); |
nuclear@12 | 70 int get_selection_count() const; |
nuclear@12 | 71 int get_selection(int idx = 0) const; |
nuclear@17 | 72 |
nuclear@17 | 73 bool intersect(const Ray &ray, RayHit *hit = 0) const; |
nuclear@20 | 74 |
nuclear@20 | 75 bool load(const char *fname); |
nuclear@20 | 76 bool save(const char *fname) const; |
nuclear@20 | 77 |
nuclear@20 | 78 bool load(FILE *fp); |
nuclear@20 | 79 bool save(FILE *fp) const; |
nuclear@1 | 80 }; |
nuclear@1 | 81 |
nuclear@1 | 82 #endif // SCENE_H_ |