Skip to content

Commit 41bdc8a

Browse files
authored
fix(shadow): Fix crash by initializing debris shadow name to an empty string (#2221)
1 parent d0ea038 commit 41bdc8a

5 files changed

Lines changed: 24 additions & 9 deletions

File tree

Core/GameEngineDevice/Source/W3DDevice/GameClient/Drawable/Draw/W3DDebrisDraw.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,6 @@ void W3DDebrisDraw::setModelName(AsciiString name, Color color, ShadowType t)
129129
{
130130
Shadow::ShadowTypeInfo shadowInfo;
131131
shadowInfo.m_type = t;
132-
shadowInfo.m_sizeX=0;
133-
shadowInfo.m_sizeY=0;
134132
m_shadow = TheW3DShadowManager->addShadow(m_renderObject, &shadowInfo);
135133
}
136134
else

Core/GameEngineDevice/Source/W3DDevice/GameClient/Drawable/Draw/W3DDefaultDraw.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,6 @@ W3DDefaultDraw::W3DDefaultDraw(Thing *thing, const ModuleData* moduleData) : Dra
6262

6363
Shadow::ShadowTypeInfo shadowInfo;
6464
shadowInfo.m_type=(ShadowType)SHADOW_VOLUME;
65-
shadowInfo.m_sizeX=0; //use defaults
66-
shadowInfo.m_sizeY=0;
67-
shadowInfo.m_offsetX=0;
68-
shadowInfo.m_offsetY=0;
6965
m_shadow = TheW3DShadowManager->addShadow(m_renderObject, &shadowInfo);
7066

7167

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -697,14 +697,11 @@ void W3DTreeBuffer::loadTreesInVertexAndIndexBuffers(RefRenderObjListIterator *p
697697

698698
if (m_shadow == nullptr && TheW3DProjectedShadowManager) {
699699
Shadow::ShadowTypeInfo shadowInfo;
700-
shadowInfo.m_ShadowName[0] = 0;
701700
shadowInfo.allowUpdates=FALSE; //shadow image will never update
702701
shadowInfo.allowWorldAlign=TRUE; //shadow image will wrap around world objects
703702
shadowInfo.m_type = (ShadowType)SHADOW_DECAL;
704703
shadowInfo.m_sizeX=20;
705704
shadowInfo.m_sizeY=20;
706-
shadowInfo.m_offsetX=0;
707-
shadowInfo.m_offsetY=0;
708705
m_shadow = TheW3DProjectedShadowManager->createDecalShadow(&shadowInfo);
709706
}
710707

Generals/Code/GameEngine/Include/GameClient/Shadow.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ class Shadow
7373

7474
struct ShadowTypeInfo
7575
{
76+
ShadowTypeInfo()
77+
{
78+
m_ShadowName[0] = '\0';
79+
m_type = SHADOW_NONE;
80+
allowUpdates = false;
81+
allowWorldAlign = false;
82+
m_sizeX = 0.0f;
83+
m_sizeY = 0.0f;
84+
m_offsetX = 0.0f;
85+
m_offsetY = 0.0f;
86+
}
87+
7688
char m_ShadowName[64]; //when set, overrides the default model shadow (used mostly for Decals).
7789
ShadowType m_type; //type of shadow
7890
Bool allowUpdates; //whether to update the shadow image when object/light moves.

GeneralsMD/Code/GameEngine/Include/GameClient/Shadow.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ class Shadow
7373

7474
struct ShadowTypeInfo
7575
{
76+
ShadowTypeInfo()
77+
{
78+
m_ShadowName[0] = '\0';
79+
m_type = SHADOW_NONE;
80+
allowUpdates = false;
81+
allowWorldAlign = false;
82+
m_sizeX = 0.0f;
83+
m_sizeY = 0.0f;
84+
m_offsetX = 0.0f;
85+
m_offsetY = 0.0f;
86+
}
87+
7688
char m_ShadowName[64]; //when set, overrides the default model shadow (used mostly for Decals).
7789
ShadowType m_type; //type of shadow
7890
Bool allowUpdates; //whether to update the shadow image when object/light moves.

0 commit comments

Comments
 (0)