rayzor

annotate src/scene.h @ 20:6b11a3f8706e

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