Skip to content

Commit f5ed1e1

Browse files
committed
perf(heighmap): Create light list iterator on the stack instead of the heap in BaseHeightMapRenderObjClass::getStaticDiffuse()
1 parent ffac8f9 commit f5ed1e1

3 files changed

Lines changed: 5 additions & 6 deletions

File tree

  • Core/GameEngineDevice/Source/W3DDevice/GameClient
  • GeneralsMD/Code/GameEngineDevice/Include/W3DDevice/GameClient
  • Generals/Code/GameEngineDevice/Include/W3DDevice/GameClient

Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2127,12 +2127,9 @@ Int BaseHeightMapRenderObjClass::getStaticDiffuse(Int x, Int y)
21272127

21282128
RTS3DScene *pMyScene = (RTS3DScene *)Scene;
21292129
if (pMyScene) {
2130-
RefRenderObjListIterator *it = pMyScene->createLightsIterator();
2131-
doTheLight(&vertex, lightRay, &normalAtTexel, it, 1.0f);
2132-
if (it) {
2133-
pMyScene->destroyLightsIterator(it);
2134-
it = nullptr;
2135-
}
2130+
RefRenderObjListClass *lightlist = pMyScene->getLightList();
2131+
RefRenderObjListIterator it(lightlist);
2132+
doTheLight(&vertex, lightRay, &normalAtTexel, &it, 1.0f);
21362133
} else {
21372134
doTheLight(&vertex, lightRay, &normalAtTexel, nullptr, 1.0f);
21382135
}

Generals/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class RTS3DScene : public SimpleSceneClass, public SubsystemInterface
9191
W3DDynamicLight *getADynamicLight();
9292
void setGlobalLight(LightClass *pLight,Int lightIndex=0);
9393
LightEnvironmentClass &getDefaultLightEnv() {return m_defaultLightEnv;}
94+
RefRenderObjListClass* getLightList() { return &LightList; }
9495

9596
virtual void init() override {}
9697
virtual void update() override {}

GeneralsMD/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DScene.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class RTS3DScene : public SimpleSceneClass, public SubsystemInterface
9191
W3DDynamicLight *getADynamicLight();
9292
void setGlobalLight(LightClass *pLight,Int lightIndex=0);
9393
LightEnvironmentClass &getDefaultLightEnv() {return m_defaultLightEnv;}
94+
RefRenderObjListClass* getLightList() { return &LightList; }
9495

9596
virtual void init() override {}
9697
virtual void update() override {}

0 commit comments

Comments
 (0)