From c9407e7d8999968cd572f0d15f5e9d6d5619b620 Mon Sep 17 00:00:00 2001 From: D-AIRY <admin@ds-servers.com> Date: Tue, 15 Dec 2020 18:04:31 +0300 Subject: [PATCH] Small bugfix --- source/game/EntityManager.cpp | 7 ++++++- source/light/LightSystem.cpp | 9 +++++++-- source/light/ShadowCache.cpp | 2 -- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/source/game/EntityManager.cpp b/source/game/EntityManager.cpp index a82c87946..707532121 100644 --- a/source/game/EntityManager.cpp +++ b/source/game/EntityManager.cpp @@ -272,14 +272,19 @@ void CEntityManager::unreg(ID ent) to = &m_vOutputTimeout[i]; if(to->status == TS_WAIT) { - to->status = TS_DONE; + int iRemoved = 0; for(int j = 0; j < to->pOutput->iOutCount; ++j) { if(to->pOutput->pOutputs[j].pTarget == pEnt) { to->pOutput->pOutputs[j].pTarget = NULL; + ++iRemoved; } } + if(iRemoved == to->pOutput->iOutCount) + { + to->status = TS_DONE; + } } } diff --git a/source/light/LightSystem.cpp b/source/light/LightSystem.cpp index 4e3a3d838..080b91df7 100644 --- a/source/light/LightSystem.cpp +++ b/source/light/LightSystem.cpp @@ -584,9 +584,14 @@ void XMETHODCALLTYPE CLightSystem::updateVisibility() for(UINT i = 0, l = m_aLights.size(); i < l; ++i) { - if(m_aLights[i]->isEnabled() && m_aLights[i]->isDirty(LRT_ALL)) + if(m_aLights[i]->isEnabled()) { - m_aLights[i]->updateVisibility(m_pMainCamera, vLPVmin, vLPVmax, iCascades > 0); + m_aLights[i]->testDirty(); + + if(m_aLights[i]->isDirty(LRT_ALL)) + { + m_aLights[i]->updateVisibility(m_pMainCamera, vLPVmin, vLPVmax, iCascades > 0); + } } } } diff --git a/source/light/ShadowCache.cpp b/source/light/ShadowCache.cpp index 0b70bd0d4..c6264bbe4 100644 --- a/source/light/ShadowCache.cpp +++ b/source/light/ShadowCache.cpp @@ -230,13 +230,11 @@ void CShadowCache::nextFrame() void CShadowCache::addLight(CXLight *pLight) { - pLight->testDirty(); m_aFrameLights.push_back(pLight); } void CShadowCache::addRSMLight(CXLight *pLight) { - pLight->testDirty(); m_aFrameRSMLights.push_back(pLight); } -- GitLab