From ae18df5f62c2725fe66300de92d2ec57de9ad378 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Tue, 24 Jun 2025 00:25:00 +0200 Subject: [PATCH] [GEN][ZH] Fix World Builder crashing on drawing scene, introduced by previous change #1146 --- .../GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp | 4 ++-- .../GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp index 83a39bce904..05ff57069eb 100644 --- a/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp +++ b/Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp @@ -399,7 +399,7 @@ void RTS3DScene::Visibility_Check(CameraClass * camera) m_translucentObjectsCount=0; m_numNonOccluderOrOccludee=0; - Int currentFrame=TheGameLogic->getFrame(); + Int currentFrame = TheGameLogic ? TheGameLogic->getFrame() : 0; if (currentFrame <= TheGlobalData->m_defaultOcclusionDelay) currentFrame = TheGlobalData->m_defaultOcclusionDelay+1; //make sure occlusion is enabled when game starts (frame 0). @@ -471,7 +471,7 @@ void RTS3DScene::Visibility_Check(CameraClass * camera) m_translucentObjectsBuffer[m_translucentObjectsCount++] = robj; } else - if (TheGlobalData->m_enableBehindBuildingMarkers && TheGameLogic->getShowBehindBuildingMarkers()) + if (TheGlobalData->m_enableBehindBuildingMarkers && TheGameLogic && TheGameLogic->getShowBehindBuildingMarkers()) { //visible drawable. Check if it's either an occluder or occludee if (draw->isKindOf(KINDOF_STRUCTURE) && m_numPotentialOccluders < TheGlobalData->m_maxVisibleOccluderObjects) diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp index 691d043f45a..072cae84f01 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp @@ -415,7 +415,7 @@ void RTS3DScene::Visibility_Check(CameraClass * camera) m_translucentObjectsCount=0; m_numNonOccluderOrOccludee=0; - Int currentFrame=TheGameLogic->getFrame(); + Int currentFrame = TheGameLogic ? TheGameLogic->getFrame() : 0; if (currentFrame <= TheGlobalData->m_defaultOcclusionDelay) currentFrame = TheGlobalData->m_defaultOcclusionDelay+1; //make sure occlusion is enabled when game starts (frame 0). @@ -490,7 +490,7 @@ void RTS3DScene::Visibility_Check(CameraClass * camera) { drawInfo->m_flags |= DrawableInfo::ERF_IS_TRANSLUCENT; //object is translucent m_translucentObjectsBuffer[m_translucentObjectsCount++] = robj; } - if (TheGlobalData->m_enableBehindBuildingMarkers && TheGameLogic->getShowBehindBuildingMarkers()) + if (TheGlobalData->m_enableBehindBuildingMarkers && TheGameLogic && TheGameLogic->getShowBehindBuildingMarkers()) { //visible drawable. Check if it's either an occluder or occludee if (draw->isKindOf(KINDOF_STRUCTURE) && m_numPotentialOccluders < TheGlobalData->m_maxVisibleOccluderObjects)