Tiberian Technologies Scripts Reference Revision: 9000
Loading...
Searching...
No Matches
SceneClass.h
1/* Renegade Scripts.dll
2 Copyright 2013 Tiberian Technologies
3
4 This file is part of the Renegade scripts.dll
5 The Renegade scripts.dll is free software; you can redistribute it and/or modify it under
6 the terms of the GNU General Public License as published by the Free
7 Software Foundation; either version 2, or (at your option) any later
8 version. See the file COPYING for more details.
9 In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
10 Only the source code to the module(s) containing the licenced code has to be released.
11*/
12#ifndef TT_INCLUDE__SCENECLASS_H
13#define TT_INCLUDE__SCENECLASS_H
14
15
16
17#include "scripts.h"
18#include "engine_common.h"
19#include "engine_vector.h"
20#include "RenderObjClass.h"
21
22class SceneIterator {
23public:
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;
29};
30class RenderInfoClass;
31class SceneClass : public RefCountClass
32{
33public:
34 enum RegType {
35 ON_FRAME_UPDATE = 0x0,
36 LIGHT = 0x1,
37 RELEASE = 0x2,
38 };
39 enum PolyRenderType {
40 POINT = 0x0,
41 LINE = 0x1,
42 FILL = 0x2,
43 };
44 enum ExtraPassPolyRenderType {
45 EXTRA_PASS_DISABLE = 0x0,
46 EXTRA_PASS_LINE = 0x1,
47 EXTRA_PASS_CLEAR_LINE = 0x2,
48 };
49private:
50 Vector3 AmbientLight; // 8 32
51 PolyRenderType PolyRenderMode; // 20 44
52 ExtraPassPolyRenderType ExtraPassPolyRenderMode; // 24 48
53 bool FogEnabled; // 28 52
54 Vector3 FogColor; // 32 56
55 float FogStart; // 44 68
56 float FogEnd; // 48 72
57
58
59public:
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);
82 SceneClass();
83 PolyRenderType Get_Polygon_Mode()
84 {
85 return PolyRenderMode;
86 }
87};
88
89
90#endif