rayzor

annotate src/scene.h @ 17:79609d482762

the renderer renders, also fixed an unnoticed matrix conversion problem between scenegraph and min3d
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 14 Apr 2014 07:34:45 +0300
parents be616b58df99
children 6b11a3f8706e
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@1 73 };
nuclear@1 74
nuclear@1 75 #endif // SCENE_H_