Skip to content

Commit 3491b02

Browse files
committed
[GEN][ZH] Remove unnecessary NULL pointer tests in RTS3DScene::RTS3DScene()
1 parent ef5fea1 commit 3491b02

File tree

2 files changed

+30
-15
lines changed
  • Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient
  • GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient

2 files changed

+30
-15
lines changed

Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ RTS3DScene::RTS3DScene()
136136
//Allocate memory to hold queue of visible renderobjects that need to be drawn last
137137
//because they are forced translucent.
138138
m_translucentObjectsCount = 0;
139-
if (TheGlobalData && TheGlobalData->m_maxVisibleTranslucentObjects)
139+
if (TheGlobalData->m_maxVisibleTranslucentObjects > 0)
140140
m_translucentObjectsBuffer = NEW RenderObjClass* [TheGlobalData->m_maxVisibleTranslucentObjects];
141141
else
142142
m_translucentObjectsBuffer = NULL;
@@ -146,18 +146,26 @@ RTS3DScene::RTS3DScene()
146146
m_numNonOccluderOrOccludee=0;
147147
m_occludedObjectsCount=0;
148148

149-
m_potentialOccluders=NULL;
150-
m_potentialOccludees=NULL;
151-
m_nonOccludersOrOccludees=NULL;
149+
if (TheGlobalData->m_maxVisibleOccluderObjects > 0)
150+
m_potentialOccluders = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccluderObjects];
151+
else
152+
m_potentialOccluders = NULL;
153+
154+
if (TheGlobalData->m_maxVisibleOccludeeObjects > 0)
155+
m_potentialOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccludeeObjects];
156+
else
157+
m_potentialOccludees = NULL;
158+
159+
if (TheGlobalData->m_maxVisibleNonOccluderOrOccludeeObjects > 0)
160+
m_nonOccludersOrOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleNonOccluderOrOccludeeObjects];
161+
else
162+
m_nonOccludersOrOccludees = NULL;
152163

153164
//Modify the shader to make occlusion transparent
154165
ShaderClass shader = PlayerColorShader;
155166
shader.Set_Src_Blend_Func(ShaderClass::SRCBLEND_SRC_ALPHA);
156167
shader.Set_Dst_Blend_Func(ShaderClass::DSTBLEND_ONE_MINUS_SRC_ALPHA);
157168

158-
m_potentialOccluders = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccluderObjects];
159-
m_potentialOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccludeeObjects];
160-
m_nonOccludersOrOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleNonOccluderOrOccludeeObjects];
161169
#ifdef USE_NON_STENCIL_OCCLUSION
162170
for (i=0; i<MAX_PLAYER_COUNT; i++)
163171
{ m_occludedMaterialPass[i]=NEW_REF(MaterialPassClass,());

GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ RTS3DScene::RTS3DScene()
152152
//Allocate memory to hold queue of visible renderobjects that need to be drawn last
153153
//because they are forced translucent.
154154
m_translucentObjectsCount = 0;
155-
if (TheGlobalData && TheGlobalData->m_maxVisibleTranslucentObjects)
155+
if (TheGlobalData->m_maxVisibleTranslucentObjects > 0)
156156
m_translucentObjectsBuffer = NEW RenderObjClass* [TheGlobalData->m_maxVisibleTranslucentObjects];
157157
else
158158
m_translucentObjectsBuffer = NULL;
@@ -162,19 +162,26 @@ RTS3DScene::RTS3DScene()
162162
m_numNonOccluderOrOccludee=0;
163163
m_occludedObjectsCount=0;
164164

165-
m_potentialOccluders=NULL;
166-
m_potentialOccludees=NULL;
167-
m_nonOccludersOrOccludees=NULL;
165+
if (TheGlobalData->m_maxVisibleOccluderObjects > 0)
166+
m_potentialOccluders = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccluderObjects];
167+
else
168+
m_potentialOccluders = NULL;
169+
170+
if (TheGlobalData->m_maxVisibleOccludeeObjects > 0)
171+
m_potentialOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccludeeObjects];
172+
else
173+
m_potentialOccludees = NULL;
174+
175+
if (TheGlobalData->m_maxVisibleNonOccluderOrOccludeeObjects > 0)
176+
m_nonOccludersOrOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleNonOccluderOrOccludeeObjects];
177+
else
178+
m_nonOccludersOrOccludees = NULL;
168179

169180
//Modify the shader to make occlusion transparent
170181
ShaderClass shader = PlayerColorShader;
171182
shader.Set_Src_Blend_Func(ShaderClass::SRCBLEND_SRC_ALPHA);
172183
shader.Set_Dst_Blend_Func(ShaderClass::DSTBLEND_ONE_MINUS_SRC_ALPHA);
173184

174-
m_potentialOccluders = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccluderObjects];
175-
m_potentialOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleOccludeeObjects];
176-
m_nonOccludersOrOccludees = NEW RenderObjClass* [TheGlobalData->m_maxVisibleNonOccluderOrOccludeeObjects];
177-
178185
#ifdef USE_NON_STENCIL_OCCLUSION
179186
for (i=0; i<MAX_PLAYER_COUNT; i++)
180187
{ m_occludedMaterialPass[i]=NEW_REF(MaterialPassClass,());

0 commit comments

Comments
 (0)