absence_thelab

annotate src/3deng/3dscene.h @ 0:1cffe3409164

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 23 Oct 2014 01:46:07 +0300
parents
children
rev   line source
nuclear@0 1 #ifndef _3DSCENE_H_
nuclear@0 2 #define _3DSCENE_H_
nuclear@0 3
nuclear@0 4 #include <list>
nuclear@0 5 #include "3dengine.h"
nuclear@0 6 #include "camera.h"
nuclear@0 7 #include "lights.h"
nuclear@0 8 #include "objects.h"
nuclear@0 9 #include "curves.h"
nuclear@0 10
nuclear@0 11 struct ShadowVolume {
nuclear@0 12 TriMesh *shadow_mesh;
nuclear@0 13 const Light *light;
nuclear@0 14 };
nuclear@0 15
nuclear@0 16 class Scene {
nuclear@0 17 private:
nuclear@0 18 GraphicsContext *gc;
nuclear@0 19
nuclear@0 20 Light *lights[8];
nuclear@0 21 std::list<Camera *> cameras;
nuclear@0 22 std::list<Object *> objects;
nuclear@0 23 std::list<ShadowVolume> StaticShadowVolumes;
nuclear@0 24 std::list<Curve *> curves;
nuclear@0 25 bool ManageData;
nuclear@0 26
nuclear@0 27 Camera *ActiveCamera;
nuclear@0 28
nuclear@0 29 bool Shadows;
nuclear@0 30 bool LightHalos;
nuclear@0 31 float HaloSize;
nuclear@0 32
nuclear@0 33 Color AmbientLight;
nuclear@0 34
nuclear@0 35 bool UseFog;
nuclear@0 36 Color FogColor;
nuclear@0 37 float NearFogRange, FarFogRange;
nuclear@0 38
nuclear@0 39 public:
nuclear@0 40
nuclear@0 41 Scene(GraphicsContext *gc = 0);
nuclear@0 42 ~Scene();
nuclear@0 43
nuclear@0 44 void SetGraphicsContext(GraphicsContext *gc);
nuclear@0 45
nuclear@0 46 void AddCamera(Camera *cam);
nuclear@0 47 void AddLight(Light *light);
nuclear@0 48 void AddObject(Object *obj);
nuclear@0 49 void AddStaticShadowVolume(TriMesh *mesh, const Light *light);
nuclear@0 50 void AddCurve(Curve *curve);
nuclear@0 51
nuclear@0 52 void RemoveObject(const Object *obj);
nuclear@0 53 void RemoveLight(const Light *light);
nuclear@0 54
nuclear@0 55 Camera *GetCamera(const char *name);
nuclear@0 56 Light *GetLight(const char *name);
nuclear@0 57 Object *GetObject(const char *name);
nuclear@0 58 Curve *GetCurve(const char *name);
nuclear@0 59
nuclear@0 60 std::list<Object*> *GetObjectsList();
nuclear@0 61
nuclear@0 62 void SetActiveCamera(Camera *cam);
nuclear@0 63 Camera *GetActiveCamera() const;
nuclear@0 64
nuclear@0 65 void SetShadows(bool enable);
nuclear@0 66 void SetHaloDrawing(bool enable);
nuclear@0 67 void SetHaloSize(float size);
nuclear@0 68 void SetAmbientLight(Color ambient);
nuclear@0 69 Color GetAmbientLight() const;
nuclear@0 70 void SetFog(bool enable, Color FogColor = Color(0l), float Near = 0.0f, float Far = 1000.0f);
nuclear@0 71
nuclear@0 72 // render states
nuclear@0 73 void SetupLights() const;
nuclear@0 74
nuclear@0 75 void RenderShadows() const;
nuclear@0 76 void Render() const;
nuclear@0 77 };
nuclear@0 78
nuclear@0 79
nuclear@0 80
nuclear@0 81 #endif // _3DSCENE_H_