diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp index 54f5a420810..0cb0507541d 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp @@ -2127,12 +2127,9 @@ Int BaseHeightMapRenderObjClass::getStaticDiffuse(Int x, Int y) RTS3DScene *pMyScene = (RTS3DScene *)Scene; if (pMyScene) { - RefRenderObjListIterator *it = pMyScene->createLightsIterator(); - doTheLight(&vertex, lightRay, &normalAtTexel, it, 1.0f); - if (it) { - pMyScene->destroyLightsIterator(it); - it = nullptr; - } + RefRenderObjListClass *lightlist = pMyScene->getLightList(); + RefRenderObjListIterator it(lightlist); + doTheLight(&vertex, lightRay, &normalAtTexel, &it, 1.0f); } else { doTheLight(&vertex, lightRay, &normalAtTexel, nullptr, 1.0f); } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainVisual.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainVisual.cpp index 963cd2b8183..ae1e9a876b1 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainVisual.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainVisual.cpp @@ -601,27 +601,19 @@ Bool W3DTerrainVisual::load( AsciiString filename ) pMapObj = pMapObj->getNext(); } - - RefRenderObjListIterator *it = W3DDisplay::m_3DScene ? W3DDisplay::m_3DScene->createLightsIterator() : nullptr; // apply the heightmap to the terrain render object - #ifdef DO_SEISMIC_SIMULATIONS m_terrainRenderObject->initHeightData( m_clientHeightMap->getDrawWidth(), m_clientHeightMap->getDrawHeight(), m_clientHeightMap, - it); + nullptr); #else m_terrainRenderObject->initHeightData( m_logicHeightMap->getDrawWidth(), m_logicHeightMap->getDrawHeight(), m_logicHeightMap, - it); + nullptr); #endif - - if (it) { - W3DDisplay::m_3DScene->destroyLightsIterator(it); - it = nullptr; - } // add our terrain render object to the scene if (W3DDisplay::m_3DScene != nullptr) W3DDisplay::m_3DScene->Add_Render_Object( m_terrainRenderObject ); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp index ad10aa2e3e9..9a98b6cbbb2 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DView.cpp @@ -3602,11 +3602,7 @@ void W3DView::updateTerrain() { DEBUG_ASSERTCRASH(TheTerrainRenderObject != nullptr, ("TheTerrainRenderObject is null")); - RefRenderObjListIterator *it = W3DDisplay::m_3DScene->createLightsIterator(); - TheTerrainRenderObject->updateCenter(m_3DCamera, it); - if (it) - { - W3DDisplay::m_3DScene->destroyLightsIterator(it); - it = nullptr; - } + RefRenderObjListClass* lightlist = W3DDisplay::m_3DScene->getLightList(); + RefRenderObjListIterator it(lightlist); + TheTerrainRenderObject->updateCenter(m_3DCamera, &it); } diff --git a/Generals/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h b/Generals/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h index 1d1e684b11c..ce0161d9f0e 100644 --- a/Generals/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h +++ b/Generals/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h @@ -85,12 +85,11 @@ class RTS3DScene : public SimpleSceneClass, public SubsystemInterface /// Lighting methods void addDynamicLight(W3DDynamicLight * obj); void removeDynamicLight(W3DDynamicLight * obj); - RefRenderObjListIterator *createLightsIterator(); - void destroyLightsIterator(RefRenderObjListIterator * it); RefRenderObjListClass *getDynamicLights() {return &m_dynamicLightList;}; W3DDynamicLight *getADynamicLight(); void setGlobalLight(LightClass *pLight,Int lightIndex=0); LightEnvironmentClass &getDefaultLightEnv() {return m_defaultLightEnv;} + RefRenderObjListClass* getLightList() { return &LightList; } virtual void init() override {} virtual void update() override {} diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp index 29d60da1d5c..43fb8f2e570 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp @@ -1596,29 +1596,6 @@ void RTS3DScene::flushTranslucentObjects(RenderInfoClass & rinfo) DX8Wrapper::Set_DX8_Render_State(D3DRS_AMBIENT,DX8Wrapper::Convert_Color(this->Get_Ambient_Light(),0.0f)); } -//============================================================================= -// RTS3DScene::createLightsIterator -//============================================================================= -/** Returns an iterator of the lights in the scene. */ -//============================================================================= -RefRenderObjListIterator * RTS3DScene::createLightsIterator() -{ - RefRenderObjListIterator * it = NEW RefRenderObjListIterator(&LightList); // poolify - return it; -} - - -//============================================================================= -// RTS3DScene::destroyLightsIterator -//============================================================================= -/** Destroys the iterator returned by createLightsIterator. */ -//============================================================================= -void RTS3DScene::destroyLightsIterator(RefRenderObjListIterator * it) -{ - delete it; -} - - //============================================================================= // RTS3DScene::addDynamicLight //============================================================================= diff --git a/GeneralsMD/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h b/GeneralsMD/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h index c84be2c015c..5854ed8e307 100644 --- a/GeneralsMD/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h +++ b/GeneralsMD/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h @@ -85,12 +85,11 @@ class RTS3DScene : public SimpleSceneClass, public SubsystemInterface /// Lighting methods void addDynamicLight(W3DDynamicLight * obj); void removeDynamicLight(W3DDynamicLight * obj); - RefRenderObjListIterator *createLightsIterator(); - void destroyLightsIterator(RefRenderObjListIterator * it); RefRenderObjListClass *getDynamicLights() {return &m_dynamicLightList;}; W3DDynamicLight *getADynamicLight(); void setGlobalLight(LightClass *pLight,Int lightIndex=0); LightEnvironmentClass &getDefaultLightEnv() {return m_defaultLightEnv;} + RefRenderObjListClass* getLightList() { return &LightList; } virtual void init() override {} virtual void update() override {} diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp index d22790fd6d7..91da3bfe791 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp @@ -1668,29 +1668,6 @@ void RTS3DScene::flushTranslucentObjects(RenderInfoClass & rinfo) DX8Wrapper::Set_DX8_Render_State(D3DRS_AMBIENT,DX8Wrapper::Convert_Color(this->Get_Ambient_Light(),0.0f)); } -//============================================================================= -// RTS3DScene::createLightsIterator -//============================================================================= -/** Returns an iterator of the lights in the scene. */ -//============================================================================= -RefRenderObjListIterator * RTS3DScene::createLightsIterator() -{ - RefRenderObjListIterator * it = NEW RefRenderObjListIterator(&LightList); // poolify - return it; -} - - -//============================================================================= -// RTS3DScene::destroyLightsIterator -//============================================================================= -/** Destroys the iterator returned by createLightsIterator. */ -//============================================================================= -void RTS3DScene::destroyLightsIterator(RefRenderObjListIterator * it) -{ - delete it; -} - - //============================================================================= // RTS3DScene::addDynamicLight //=============================================================================