Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
scene.cpp
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(tm)
3** Copyright 2025 Electronic Arts Inc.
4**
5** This program is free software: you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation, either version 3 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19/***********************************************************************************************
20 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21 ***********************************************************************************************
22 * *
23 * Project Name : WW3D *
24 * *
25 * $Archive:: /VSS_Sync/ww3d2/scene.cpp $*
26 * *
27 * Org Author:: Greg_h *
28 * *
29 * Author : Kenny Mitchell *
30 * *
31 * $Modtime:: 07/01/02 12:55p $*
32 * *
33 * $Revision:: 24 $*
34 * *
35 * 06/27/02 KM Shader system light environment updates *
36 * 07/01/02 KM Coltype enum change to avoid MAX conflicts *
37 *---------------------------------------------------------------------------------------------*
38 * Functions: *
39 * SceneClass::SceneClass -- constructor *
40 * SceneClass::~SceneClass -- destructor *
41 * SceneClass::Render -- preps the scene for rendering, derived classes should override *
42 * SceneClass::Add_Render_Object -- base add function *
43 * SceneClass::Remove_Render_Object -- base remove function *
44 * SceneClass::Set_Depth_Cue -- set the depth cue values *
45 * SceneClass::Set_Fog_Range -- set the fog range *
46 * SceneClass::Get_Fog_Range -- get the fog range *
47 * SceneClass::Render -- preps the scene for rendering, derived classes should add functional*
48 * SimpleSceneClass -- Constructor *
49 * SimpleSceneClass::~SimpleSceneClass -- destructor *
50 * SimpleSceneClass::Add_Render_Object -- add a render object to the scene *
51 * SimpleSceneClass::Remove_Render_Object -- remove a render object from this scene *
52 * SimpleSceneClass::Visiblity_Check -- set the visiblity status of the render objects *
53 * SimpleSceneClass::Render -- internal scene rendering function *
54 * SimpleSceneClass::Render -- Render this scene *
55 * SimpleSceneClass::Create_Iterator -- create an iterator for this scene *
56 * SimpleSceneClass::Destroy_Iterator -- destroy an iterater of this scene *
57 * SceneClass::Save -- saves scene settings into a chunk *
58 * SceneClass::Load -- loads scene settings from a chunk *
59 * SimpleSceneClass::Compute_Point_Visibility -- returns visibility of a point *
60 * SimpleSceneClass::Remove_All_Render_Objects -- Removes all render objects from the scene *
61 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
62
63
64#include "scene.h"
65#include "plane.h"
66#include "camera.h"
67#include "ww3d.h"
68#include "rinfo.h"
69#include "chunkio.h"
70#include "dx8renderer.h"
71#include "dx8wrapper.h"
72#include "sortingrenderer.h"
73#include "coltest.h"
74
75
76/*
77** Chunk ID's used by SceneClass
78*/
79enum
80{
82
89};
90
91/*
92** SimpleSceneIterator
93** This iterator is used by the SimpleSceneClass to allow
94** the user to iterate through its render objects.
95*/
97{
98public:
99 virtual void First(void);
100 virtual void Next(void);
101 virtual bool Is_Done(void);
102 virtual RenderObjClass * Current_Item(void);
103
104protected:
105
106 SimpleSceneIterator(RefRenderObjListClass * renderlist,bool onlyvis);
107
111
112 friend class SimpleSceneClass;
113};
114
115
116/***********************************************************************************************
117 * SceneClass::SceneClass -- constructor *
118 * *
119 * INPUT: *
120 * *
121 * OUTPUT: *
122 * *
123 * WARNINGS: *
124 * *
125 * HISTORY: *
126 * 12/10/98 GTH : Created. *
127 *=============================================================================================*/
129 AmbientLight(0.5f,0.5f,0.5f),
133 FogColor(0,0,0),
134 FogStart(0.0f),
135 FogEnd(1000.0f) // Arbitrary default value
136{
137}
138
139
140/***********************************************************************************************
141 * SceneClass::~SceneClass -- destructor *
142 * *
143 * INPUT: *
144 * *
145 * OUTPUT: *
146 * *
147 * WARNINGS: *
148 * *
149 * HISTORY: *
150 * 12/10/98 GTH : Created. *
151 *=============================================================================================*/
155
156/***********************************************************************************************
157 * SceneClass::Add_Render_Object -- base add function *
158 * *
159 * This function only sets the render object's scene pointer and calls the notify method. *
160 * Derived classes must add the functionality of actually storing a pointer to the object *
161 * and doing something with it :) *
162 * *
163 * INPUT: *
164 * obj - pointer to the object to add *
165 * *
166 * OUTPUT: *
167 * *
168 * WARNINGS: *
169 * *
170 * HISTORY: *
171 * 2/25/99 GTH : Created. *
172 *=============================================================================================*/
174{
175 obj->Notify_Added(this);
176}
177
178
179/***********************************************************************************************
180 * SceneClass::Remove_Render_Object -- base remove function *
181 * *
182 * Similar to the add function; concrete derived classes must override and actually remove *
183 * the object... *
184 * *
185 * INPUT: *
186 * obj - pointer to the object to remove *
187 * *
188 * OUTPUT: *
189 * *
190 * WARNINGS: *
191 * *
192 * HISTORY: *
193 * 2/25/99 GTH : Created. *
194 *=============================================================================================*/
199
200
201/***********************************************************************************************
202 * SceneClass::Render -- preps the scene for rendering, derived classes should add functionalit*
203 * *
204 * INPUT: *
205 * *
206 * OUTPUT: *
207 * *
208 * WARNINGS: *
209 * *
210 * HISTORY: *
211 * 12/10/98 GTH : Created. *
212 *=============================================================================================*/
214{
215 // Any stuff that needs to get done before anything else
216 Pre_Render_Processing(rinfo);
217
219
221 Customized_Render(rinfo);
222 }
223 else {
224 bool old_enable=WW3D::Is_Texturing_Enabled();
225
226 DX8Wrapper::Set_DX8_Render_State (D3DRS_ZBIAS, 0);
227 Customized_Render(rinfo);
228 switch (Get_Extra_Pass_Polygon_Mode()) {
229 case EXTRA_PASS_LINE:
231 DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
232 DX8Wrapper::Set_DX8_Render_State (D3DRS_ZBIAS, 7);
233 Customized_Render(rinfo);
234 break;
236 DX8Wrapper::Clear(true, false, Vector3(0.0f,0.0f,0.0f)); // Clear color but not z
238 DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
239 DX8Wrapper::Set_DX8_Render_State (D3DRS_ZBIAS, 7);
240 Customized_Render(rinfo);
241 break;
242 }
243
244 WW3D::Enable_Texturing(old_enable);
245 }
246
247 // Any stuff that needs to get done after anything else
248 Post_Render_Processing(rinfo);
249}
250
251/***********************************************************************************************
252 * SceneClass::Save -- saves scene settings into a chunk *
253 * *
254 * INPUT: *
255 * *
256 * OUTPUT: *
257 * *
258 * WARNINGS: *
259 * *
260 * HISTORY: *
261 *=============================================================================================*/
273
274
275/***********************************************************************************************
276 * SceneClass::Load -- loads scene settings from a chunk *
277 * *
278 * INPUT: *
279 * *
280 * OUTPUT: *
281 * *
282 * WARNINGS: *
283 * *
284 * HISTORY: *
285 *=============================================================================================*/
287{
288 cload.Open_Chunk();
290
291 while (cload.Open_Micro_Chunk()) {
292 switch(cload.Cur_Micro_Chunk_ID()) {
299 }
300 cload.Close_Micro_Chunk();
301 }
302
303 } else {
304 WWDEBUG_SAY(("Unhandled Chunk: 0x%X in file: %s line: %d\r\n",cload.Cur_Chunk_ID(),__FILE__,__LINE__));
305 }
306 cload.Close_Chunk();
307}
308
309
310/***********************************************************************************************
311 * SimpleSceneClass -- Constructor *
312 * *
313 * INPUT: *
314 * *
315 * OUTPUT: *
316 * *
317 * WARNINGS: *
318 * *
319 * HISTORY: *
320 * 3/24/98 GTH : Created. *
321 * 9/10/99 GTH : Created. *
322 *=============================================================================================*/
328
329/***********************************************************************************************
330 * SimpleSceneClass::~SimpleSceneClass -- destructor *
331 * *
332 * INPUT: *
333 * *
334 * OUTPUT: *
335 * *
336 * WARNINGS: *
337 * *
338 * HISTORY: *
339 * 3/24/98 GTH : Created. *
340 *=============================================================================================*/
345
346/***********************************************************************************************
347 * SimpleSceneClass::Remove_All_Render_Objects -- Removes all render objects from the scene *
348 * *
349 * *
350 * *
351 * *
352 * INPUT: *
353 * *
354 * OUTPUT: *
355 * *
356 * WARNINGS: *
357 * *
358 * HISTORY: *
359 * 8/27/2001 hy : Created. *
360 *=============================================================================================*/
362{
363 RenderObjClass * obj;
364 while ( ( obj = RenderList.Remove_Head() ) != NULL ) {
366 obj->Release_Ref(); // remove head gets a ref
367 }
368}
369
370/***********************************************************************************************
371 * SimpleSceneClass::Add_Render_Object -- add a render object to the scene *
372 * *
373 * INPUT: *
374 * *
375 * OUTPUT: *
376 * *
377 * WARNINGS: *
378 * *
379 * HISTORY: *
380 * 3/24/98 GTH : Created. *
381 *=============================================================================================*/
387
388
389/***********************************************************************************************
390 * SimpleSceneClass::Remove_Render_Object -- remove a render object from this scene *
391 * *
392 * INPUT: *
393 * *
394 * OUTPUT: *
395 * *
396 * WARNINGS: *
397 * *
398 * HISTORY: *
399 * 3/24/98 GTH : Created. *
400 *=============================================================================================*/
402{
404 // HY
405 // this line must come last because otherwise it might cause
406 // a premature release ref and cause a crash
407 RenderList.Remove(obj);
408}
409
411{
412 switch (for_what) {
413 case ON_FRAME_UPDATE:
414 UpdateList.Add(obj);
415 break;
416 case LIGHT:
417 LightList.Add_Tail(obj);
418 break;
419 case RELEASE:
420 ReleaseList.Add(obj);
421 break;
422 };
423}
424
426{
427 switch (for_what) {
428 case ON_FRAME_UPDATE:
429 UpdateList.Remove(obj);
430 break;
431 case LIGHT:
432 LightList.Remove(obj);
433 break;
434 case RELEASE:
435 ReleaseList.Remove(obj);
436 break;
437 }
438}
439
440
441
442/***********************************************************************************************
443 * SimpleSceneClass::Visiblity_Check -- set the visiblity status of the render objects *
444 * *
445 * INPUT: *
446 * *
447 * OUTPUT: *
448 * *
449 * WARNINGS: *
450 * *
451 * HISTORY: *
452 * 3/24/98 GTH : Created. *
453 * 4/13/98 NH : Added non-trivial checking (sphere vs. frustum). *
454 *=============================================================================================*/
456{
458
459 // Loop over all top-level RenderObjects in this scene. If the bounding sphere is not in front
460 // of all the frustum planes, it is invisible.
461 for (it.First(); !it.Is_Done(); it.Next()) {
462
463 RenderObjClass * robj = it.Peek_Obj();
464
465 if (robj->Is_Force_Visible()) {
466 robj->Set_Visible(true);
467 } else {
468 robj->Set_Visible(!camera->Cull_Sphere(robj->Get_Bounding_Sphere()));
469 }
470
471 // Prepare visible objects for LOD:
472 if(robj->Is_Really_Visible() && !robj->Is_Ignoring_LOD_Cost()) {
473 robj->Prepare_LOD(*camera);
474 }
475 }
476
477 Visibility_Checked = true;
478}
479
480
481/***********************************************************************************************
482 * SimpleSceneClass::Compute_Point_Visibility -- returns visibility of a point *
483 * *
484 * This function is used by the default dazzle behavior. SimpleSceneClass's implementation *
485 * casts a ray against every object in the scene to see if the dazzle is occluded. *
486 * *
487 * INPUT: *
488 * *
489 * OUTPUT: *
490 * *
491 * WARNINGS: *
492 * *
493 * HISTORY: *
494 * 6/13/2001 gth : Created. *
495 *=============================================================================================*/
497(
498 RenderInfoClass & rinfo,
499 const Vector3 & point
500)
501{
503 LineSegClass ray(rinfo.Camera.Get_Position(),point);
505
507 for (it.First(); !it.Is_Done(); it.Next()) {
508 RenderObjClass * robj = it.Peek_Obj();
509 robj->Cast_Ray(raytest);
510 }
511
512 if (res.Fraction == 1.0f) {
513 return 1.0f;
514 } else {
515 return 0.0f;
516 }
517}
518
519
520/***********************************************************************************************
521 * SimpleSceneClass::Render -- Render this scene *
522 * *
523 * passes the gerd and camera to all render objects for rendering... *
524 * *
525 * INPUT: *
526 * *
527 * OUTPUT: *
528 * *
529 * WARNINGS: *
530 * *
531 * HISTORY: *
532 * 12/10/98 GTH : Created. *
533 * 06/27/02 KM Shader system light environment updates *
534 *=============================================================================================*/
536{
537// SceneClass::Render(rinfo);
538
539 // If visibility has not been checked for this scene since the last
540 // Render() call, check it (set/clear the visibility bit in all render
541 // objects in the scene).
542 if (!Visibility_Checked) {
543 // set the visibility bit in all render objects in all layers.
544 Visibility_Check(&rinfo.Camera);
545 }
546 Visibility_Checked = false;
547
549
550 // allow all objects in the update list to do their "every frame" processing
551 for (it.First(); !it.Is_Done(); it.Next()) {
553 }
554
555 // apply only the first four lights in the scene
556 // derived classes should use light environment
558 int count=0;
559 // Turn off lights in case we have none
564
565// (gth) WWShade only works with light environments. We need to upgrade LightEnvironment to
566// support real point lights, etc. It will likely just evolve into "the n most important" lights
567// rather than optimizing lights into directional lights...
568#if 0
569 for (it.First(&LightList); !it.Is_Done(); it.Next())
570 {
571 if (count<4)
572 {
574 } else
575 {
576 // Simple scene only supports 4 global lights
577 WWDEBUG_SAY(("Light %d ignored\n",count));
578 }
579 count++;
580 }
581#endif
582
583 // adding light environment for new shader system
584 if (!rinfo.light_environment)
585 {
586 static LightEnvironmentClass lenv;
587
588 lenv.Reset(Vector3(0,0,0),AmbientLight);
589
590 for (it.First(&LightList); !it.Is_Done(); it.Next())
591 {
592 lenv.Add_Light(*(LightClass*)it.Peek_Obj());
593 }
595
596 rinfo.light_environment=&lenv;
597 }
598
599
600 // loop through all render objects in the list:
601 for (it.First(&RenderList); !it.Is_Done(); it.Next()) {
602
603 // get the render object
604 RenderObjClass * robj = it.Peek_Obj();
605
606 if (robj->Is_Really_Visible()) {
607 if (robj->Get_Render_Hook()) {
608 if (robj->Get_Render_Hook()->Pre_Render(robj, rinfo)) {
609 robj->Render(rinfo);
610 }
611 robj->Get_Render_Hook()->Post_Render(robj, rinfo);
612 } else {
613 robj->Render(rinfo);
614 }
615 }
616 }
617}
618
620{
621 // process the 'Release' list. These are objects that have notified us that they
622 // want to be released. We have to walk this list twice, first un-linking the
623 // object from the scene or its container. And then removing them all from
624 // the list. (this last removal will destroy any auto-created objects)
626 for (it.First(&ReleaseList); !it.Is_Done(); it.Next()) {
627 RenderObjClass * robj = it.Peek_Obj();
628 if (robj->Get_Container()) {
629 robj->Get_Container()->Remove_Sub_Object(robj);
630 } else {
631 robj->Remove();
632 }
633 }
634
635 while(!ReleaseList.Is_Empty()) {
636 ReleaseList.Release_Head();
637 }
638}
639
640/***********************************************************************************************
641 * SimpleSceneClass::Create_Iterator -- create an iterator for this scene *
642 * *
643 * INPUT: *
644 * *
645 * OUTPUT: *
646 * *
647 * WARNINGS: *
648 * *
649 * HISTORY: *
650 * 3/27/98 GTH : Created. *
651 *=============================================================================================*/
653{
655 return it;
656}
657
658
659/***********************************************************************************************
660 * SimpleSceneClass::Destroy_Iterator -- destroy an iterater of this scene *
661 * *
662 * INPUT: *
663 * *
664 * OUTPUT: *
665 * *
666 * WARNINGS: *
667 * *
668 * HISTORY: *
669 * 3/27/98 GTH : Created. *
670 *=============================================================================================*/
672{
673 delete it;
674}
675
676
678 RobjIterator(list)
679{
680 // TODO: make SimpleSceneIterator able to iterate through only the visible nodes.
681 OnlyVis = onlyvis;
682}
683
685{
686 RobjIterator.First();
687}
688
690{
691 RobjIterator.Next();
692}
693
695{
696 return RobjIterator.Is_Done();
697}
698
700{
701 return RobjIterator.Peek_Obj();
702}
#define NULL
Definition BaseType.h:92
#define WWASSERT
#define W3DNEW
Definition always.h:109
@ false
Definition bool.h:59
#define WRITE_MICRO_CHUNK(csave, id, var)
Definition chunkio.h:293
#define READ_MICRO_CHUNK(cload, id, var)
Definition chunkio.h:334
bool Cull_Sphere(const SphereClass &sphere) const
Definition camera.h:308
bool Close_Micro_Chunk()
Definition chunkio.cpp:585
bool Close_Chunk()
Definition chunkio.cpp:448
uint32 Cur_Chunk_ID()
Definition chunkio.cpp:484
uint32 Cur_Micro_Chunk_ID()
Definition chunkio.cpp:622
bool Open_Chunk()
Definition chunkio.cpp:412
bool Open_Micro_Chunk()
Definition chunkio.cpp:557
bool Begin_Chunk(uint32 id)
Definition chunkio.cpp:108
bool End_Chunk()
Definition chunkio.cpp:148
static void Clear(bool clear_color, bool clear_z_stencil, const Vector3 &color, float dest_alpha=0.0f, float z=1.0f, unsigned int stencil=0)
Clear current render device.
static void Set_Light(unsigned index, const D3DLIGHT8 *light)
static void Set_Fog(bool enable, const Vector3 &color, float start, float end)
Definition dx8wrapper.h:819
static void Set_DX8_Render_State(D3DRENDERSTATETYPE state, unsigned value)
Definition dx8wrapper.h:874
void First(GenericMultiListClass *list)
Definition multilist.h:182
void Pre_Render_Update(const Matrix3D &camera_tm)
void Reset(const Vector3 &object_center, const Vector3 &scene_ambient)
void Add_Light(const LightClass &light)
WWINLINE void Release_Ref(void) const
Definition refcount.h:146
ObjectType * Peek_Obj(void)
Definition multilist.h:461
virtual void Post_Render(RenderObjClass *robj, RenderInfoClass &rinfo)=0
virtual bool Pre_Render(RenderObjClass *robj, RenderInfoClass &rinfo)=0
CameraClass & Camera
Definition rinfo.h:100
LightEnvironmentClass * light_environment
Definition rinfo.h:109
Vector3 Get_Position(void) const
Definition rendobj.cpp:508
bool Is_Ignoring_LOD_Cost(void)
Definition rendobj.h:498
virtual void On_Frame_Update()
Definition rendobj.h:270
virtual void Set_Visible(int onoff)
Definition rendobj.h:465
virtual const SphereClass & Get_Bounding_Sphere(void) const
Definition rendobj.h:567
virtual void Notify_Added(SceneClass *scene)
Definition rendobj.cpp:862
virtual int Is_Really_Visible(void)
Definition rendobj.h:462
RenderHookClass * Get_Render_Hook(void)
Definition rendobj.h:512
virtual void Notify_Removed(SceneClass *scene)
Definition rendobj.cpp:884
const Matrix3D & Get_Transform(void) const
Definition rendobj.h:617
virtual void Remove(void)
Definition rendobj.cpp:816
virtual bool Cast_Ray(RayCollisionTestClass &raytest)
Definition rendobj.h:376
virtual void Prepare_LOD(CameraClass &camera)
Definition rendobj.cpp:645
virtual int Is_Force_Visible(void) const
Definition rendobj.h:475
RenderObjClass * Get_Container(void) const
Definition rendobj.h:291
virtual int Remove_Sub_Object(RenderObjClass *robj)
Definition rendobj.h:312
virtual void Render(RenderInfoClass &rinfo)=0
@ EXTRA_PASS_CLEAR_LINE
Definition scene.h:154
@ EXTRA_PASS_LINE
Definition scene.h:153
@ EXTRA_PASS_DISABLE
Definition scene.h:152
float FogEnd
Definition scene.h:196
virtual void Load(ChunkLoadClass &cload)
Definition scene.cpp:286
bool FogEnabled
Definition scene.h:193
Vector3 AmbientLight
Definition scene.h:189
float FogStart
Definition scene.h:195
virtual void Add_Render_Object(RenderObjClass *obj)
Definition scene.cpp:173
virtual void Render(RenderInfoClass &rinfo)
Definition scene.cpp:213
virtual void Save(ChunkSaveClass &csave)
Definition scene.cpp:262
ExtraPassPolyRenderType Get_Extra_Pass_Polygon_Mode(void)
Definition scene.h:158
virtual ~SceneClass(void)
Definition scene.cpp:152
Vector3 FogColor
Definition scene.h:194
@ ON_FRAME_UPDATE
Definition scene.h:165
@ RELEASE
Definition scene.h:167
virtual void Remove_Render_Object(RenderObjClass *obj)
Definition scene.cpp:195
ExtraPassPolyRenderType ExtraPassPolyRenderMode
Definition scene.h:191
SceneClass(void)
Definition scene.cpp:128
PolyRenderType PolyRenderMode
Definition scene.h:190
SceneIterator(void)
Definition scene.h:74
virtual float Compute_Point_Visibility(RenderInfoClass &rinfo, const Vector3 &point)
Definition scene.cpp:497
virtual void Remove_All_Render_Objects(void)
Definition scene.cpp:361
virtual void Post_Render_Processing(RenderInfoClass &rinfo)
Definition scene.cpp:619
SimpleSceneClass(void)
Definition scene.cpp:323
virtual ~SimpleSceneClass(void)
Definition scene.cpp:341
virtual void Destroy_Iterator(SceneIterator *it)
Definition scene.cpp:671
virtual void Add_Render_Object(RenderObjClass *obj)
Definition scene.cpp:382
virtual SceneIterator * Create_Iterator(bool onlyvisible=false)
Definition scene.cpp:652
virtual void Remove_Render_Object(RenderObjClass *obj)
Definition scene.cpp:401
virtual void Unregister(RenderObjClass *obj, RegType for_what)
Definition scene.cpp:425
RefRenderObjListClass UpdateList
Definition scene.h:259
virtual void Register(RenderObjClass *obj, RegType for_what)
Definition scene.cpp:410
virtual void Customized_Render(RenderInfoClass &rinfo)
Definition scene.cpp:535
virtual void Visibility_Check(CameraClass *camera)
Definition scene.cpp:455
RefRenderObjListClass LightList
Definition scene.h:260
friend class SimpleSceneIterator
Definition scene.h:263
bool Visibility_Checked
Definition scene.h:256
RefRenderObjListClass ReleaseList
Definition scene.h:261
RefRenderObjListClass RenderList
Definition scene.h:258
virtual bool Is_Done(void)
Definition scene.cpp:694
SimpleSceneIterator(RefRenderObjListClass *renderlist, bool onlyvis)
Definition scene.cpp:677
virtual RenderObjClass * Current_Item(void)
Definition scene.cpp:699
SimpleSceneClass * Scene
Definition scene.cpp:109
friend class SimpleSceneClass
Definition scene.cpp:112
virtual void Next(void)
Definition scene.cpp:689
RefRenderObjListIterator RobjIterator
Definition scene.cpp:108
virtual void First(void)
Definition scene.cpp:684
static void Enable_Texturing(bool b)
Definition ww3d.cpp:1770
static bool Is_Texturing_Enabled()
Definition ww3d.h:257
@ COLL_TYPE_PROJECTILE
Definition coltype.h:85
RefMultiListClass< RenderObjClass > RefRenderObjListClass
Definition robjlist.h:59
RefMultiListIterator< RenderObjClass > RefRenderObjListIterator
Definition robjlist.h:60
@ SCENECLASS_VARIABLE_AMBIENTLIGHT
Definition scene.cpp:83
@ SCENECLASS_VARIABLE_FOGCOLOR
Definition scene.cpp:85
@ SCENECLASS_VARIABLE_FOGSTART
Definition scene.cpp:87
@ SCENECLASS_VARIABLE_FOGENABLED
Definition scene.cpp:86
@ SCENECLASS_VARIABLE_POLYRENDERMODE
Definition scene.cpp:84
@ SCENECLASS_CHUNK_VARIABLES
Definition scene.cpp:81
@ SCENECLASS_VARIABLE_FOGEND
Definition scene.cpp:88
#define WWDEBUG_SAY(x)
Definition wwdebug.h:114