12#ifndef TT_INCLUDE__SCENECLASS_H
13#define TT_INCLUDE__SCENECLASS_H
18#include "engine_common.h"
19#include "engine_vector.h"
20#include "RenderObjClass.h"
24 virtual ~SceneIterator() {};
25 virtual void First() = 0;
26 virtual void Next() = 0;
27 virtual bool Is_Done() = 0;
28 virtual RenderObjClass *Current_Item() = 0;
31class SceneClass :
public RefCountClass
35 ON_FRAME_UPDATE = 0x0,
44 enum ExtraPassPolyRenderType {
45 EXTRA_PASS_DISABLE = 0x0,
46 EXTRA_PASS_LINE = 0x1,
47 EXTRA_PASS_CLEAR_LINE = 0x2,
51 PolyRenderType PolyRenderMode;
52 ExtraPassPolyRenderType ExtraPassPolyRenderMode;
60 virtual ~SceneClass();
61 virtual void Add_Render_Object(RenderObjClass* obj);
62 virtual void Remove_Render_Object(RenderObjClass* obj);
63 virtual SceneIterator *Create_Iterator(
bool onlyvisible) = 0;
64 virtual void Destroy_Iterator(SceneIterator* it) = 0;
65 virtual void Set_Ambient_Light(
const Vector3& color);
66 virtual const Vector3& Get_Ambient_Light();
67 virtual void Set_Fog_Enable(
bool set);
68 virtual bool Get_Fog_Enable();
69 virtual void Set_Fog_Color(
const Vector3& color);
70 virtual Vector3& Get_Fog_Color();
71 virtual void Set_Fog_Range(
float start,
float end);
72 virtual void Get_Fog_Range(
float* start,
float* end);
73 virtual void Register(
class RenderObjClass* obj, RegType for_what) = 0;
74 virtual void Unregister(
class RenderObjClass* obj, RegType for_what) = 0;
75 virtual float Compute_Point_Visibility(RenderInfoClass& rinfo,
const Vector3& point);
76 virtual void Save(ChunkSaveClass& csave);
77 virtual void Load(ChunkLoadClass& cload);
78 virtual void Customized_Render(RenderInfoClass& rinfo) = 0;
79 virtual void Pre_Render_Processing(RenderInfoClass& rinfo);
80 virtual void Post_Render_Processing(RenderInfoClass& rinfo);
81 void Render(RenderInfoClass& rinfo);
83 PolyRenderType Get_Polygon_Mode()
85 return PolyRenderMode;