@@ -339,6 +339,13 @@ void W3DGhostObject::snapShot(int playerIndex)
339339 if (draw->isDrawableEffectivelyHidden ())
340340 return ; // don't bother to snapshot things which nobody can see.
341341
342+ // After we remove the unfogged object, we also disable
343+ // anything that should be hidden inside fog - shadow, particles, etc.
344+ draw->setFullyObscuredByShroud (true );
345+
346+ // TheSuperHackers @bugfix Definitely keep this shrouded from here on until the shroud becomes clear again.
347+ draw->setShroudClearFrame (InvalidShroudClearFrame);
348+
342349 W3DRenderObjectSnapshot *snap = m_parentSnapshots[playerIndex];
343350 W3DRenderObjectSnapshot *prevSnap = NULL ;
344351
@@ -417,6 +424,9 @@ void W3DGhostObject::removeParentObject(void)
417424 // anything that should be hidden inside fog - shadow, particles, etc.
418425 draw->setFullyObscuredByShroud (true );
419426
427+ // TheSuperHackers @bugfix Definitely keep this shrouded from here on until the shroud becomes clear again.
428+ draw->setShroudClearFrame (InvalidShroudClearFrame);
429+
420430 // walk through all W3D render objects used by this object
421431 for (DrawModule ** dm = draw->getDrawModules (); *dm; ++dm)
422432 {
@@ -985,6 +995,12 @@ void W3DGhostObjectManager::setLocalPlayerIndex(int playerIndex)
985995 const ObjectShroudStatus shroudStatus = obj->getShroudedStatus (playerIndex);
986996 const Bool shrouded = shroudStatus >= OBJECTSHROUD_FOGGED;
987997 draw->setFullyObscuredByShroud (shrouded);
998+
999+ if (shrouded)
1000+ {
1001+ // TheSuperHackers @bugfix Definitely keep this shrouded from here on until the shroud becomes clear again.
1002+ draw->setShroudClearFrame (InvalidShroudClearFrame);
1003+ }
9881004 }
9891005}
9901006
0 commit comments