absence_thelab
annotate src/3deng/3dscene.h @ 1:4d5933c261c3
todo and .hgignore
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 23 Oct 2014 02:18:43 +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_ |