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_