0ad/source/simulation2/components
josue ce249f4ef0 Don't recompute the LOS visibility of unchanged entities when rendering
The per-turn visibility update of the range manager runs on MT_Update,
which is broadcast before unit motion and before scripted components
act. LOS changes later in the turn therefore leave regions flagged
dirty during all the frames rendered until the next turn, so the
renderer's once-per-turn GetLosVisibility query fell back to
ComputeLosVisibility for every entity in such regions. That calls into
the scripted Visibility component of every corpse near any fight once
per turn from the render path (#8327), and shows end-of-turn visibility
while positions are still interpolating across the turn (#5876).

Add GetCachedLosVisibility, which trusts the visibility cache for dirty
regions but still recomputes entities whose own state changed since the
last update - so newly spawned entities (corpses, mirages) don't render
hidden until the next turn - and use it for unit rendering and the
minimap. The cached result is consistent with the VisibilityChanged
messages. Simulation and UI callers keep the existing behaviour.

Limiting the scripted visibility calls to the per-turn update was
suggested by Itms and Vantha in #8327.
2026-06-12 18:09:56 +02:00
..
tests Don't recompute the LOS visibility of unchanged entities when rendering 2026-06-12 18:09:56 +02:00
CCmpAIManager.cpp LosRevealAll -> LosRevealWholeMap 2026-03-03 11:25:52 +01:00
CCmpCinemaManager.cpp Remove pointless const's from ICmpCinemaManager.h 2026-03-24 11:15:27 +01:00
CCmpCommandQueue.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpDecay.cpp fix debug build by directly setting probability for the inverse binomial in Decay.cpp 2025-10-08 17:00:09 +02:00
CCmpFootprint.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpMinimap.cpp Remove <type> from minimap schema and templates 2025-10-26 21:43:25 +01:00
CCmpMotionBall.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpObstruction.cpp Fix -Wunnecessary-virtual-specifier warnings 2025-11-11 21:35:01 +01:00
CCmpObstructionManager.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpOverlayRenderer.cpp Move cutscene mode to renderer 2026-03-03 11:25:52 +01:00
CCmpOwnership.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpParticleManager.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpPathfinder.cpp Make TaskManager independent of Future 2025-08-28 20:01:39 +02:00
CCmpPathfinder_Common.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
CCmpPosition.cpp Replace M_PI with C++ numbers 2026-06-04 20:29:48 +02:00
CCmpProjectileManager.cpp LosRevealAll -> LosRevealWholeMap 2026-03-03 11:25:52 +01:00
CCmpRallyPointRenderer.cpp Fix some includes all over the place 2025-08-14 20:15:30 +02:00
CCmpRallyPointRenderer.h Fix -Wunnecessary-virtual-specifier warnings 2025-11-11 21:35:01 +01:00
CCmpRangeManager.cpp Don't recompute the LOS visibility of unchanged entities when rendering 2026-06-12 18:09:56 +02:00
CCmpRangeOverlayRenderer.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpSelectable.cpp Move cutscene mode to renderer 2026-03-03 11:25:52 +01:00
CCmpSoundManager.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
CCmpTemplateManager.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpTerrain.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpTerritoryInfluence.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpTerritoryManager.cpp Replace M_PI with C++ numbers 2026-06-04 20:29:48 +02:00
CCmpTest.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
CCmpUnitMotion.h Fix formation reshuffling after entity rename 2026-02-04 11:05:07 +01:00
CCmpUnitMotion_System.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
CCmpUnitMotionManager.h Fix some includes all over the place 2025-08-14 20:15:30 +02:00
CCmpUnitRenderer.cpp Don't recompute the LOS visibility of unchanged entities when rendering 2026-06-12 18:09:56 +02:00
CCmpVision.cpp Fix -Wunnecessary-virtual-specifier warnings 2025-11-11 21:35:01 +01:00
CCmpVisualActor.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
CCmpWaterManager.cpp Fix includes in source/simulation2 2025-08-03 17:16:27 +02:00
ICmpAIInterface.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpAIInterface.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpAIManager.cpp Replace boost::filesystem std::filyestem 2025-10-29 09:56:32 +01:00
ICmpAIManager.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpAttack.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpAttack.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpCinemaManager.cpp Revamp CinemaManager component 2026-03-03 11:25:52 +01:00
ICmpCinemaManager.h Remove pointless const's from ICmpCinemaManager.h 2026-03-24 11:15:27 +01:00
ICmpCommandQueue.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpCommandQueue.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpDecay.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpDecay.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpFogging.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpFogging.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpFootprint.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpFootprint.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpGarrisonHolder.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpGarrisonHolder.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpGuiInterface.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpGuiInterface.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpIdentity.cpp Support std::optional in FromJSVal 2025-06-19 08:52:24 -05:00
ICmpIdentity.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpMinimap.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpMinimap.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpMirage.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpMirage.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpMotion.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpMotion.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpObstruction.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpObstruction.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpObstructionManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpObstructionManager.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpOverlayRenderer.cpp Move cutscene mode to renderer 2026-03-03 11:25:52 +01:00
ICmpOverlayRenderer.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpOwnership.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpOwnership.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpParticleManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpParticleManager.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpPathfinder.cpp Improve group movement by distributing units around the target. 2025-05-24 14:34:09 +02:00
ICmpPathfinder.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpPlayer.cpp Fix some includes all over the place 2025-08-13 19:38:21 +02:00
ICmpPlayer.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpPlayerManager.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpPlayerManager.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpPosition.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpPosition.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpProjectileManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpProjectileManager.h Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpRallyPoint.cpp Fix some includes all over the place 2025-08-13 19:38:21 +02:00
ICmpRallyPoint.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpRallyPointRenderer.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpRallyPointRenderer.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpRangeManager.cpp Introduce separate LosRevealWholeMapForAll flag 2026-03-03 11:25:52 +01:00
ICmpRangeManager.h Don't recompute the LOS visibility of unchanged entities when rendering 2026-06-12 18:09:56 +02:00
ICmpRangeOverlayRenderer.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpRangeOverlayRenderer.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpSelectable.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpSelectable.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpSettlement.cpp Fix some includes all over the place 2025-08-13 19:38:21 +02:00
ICmpSettlement.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpSound.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpSound.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpSoundManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpSoundManager.h Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpTemplateManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpTemplateManager.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpTerrain.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpTerrain.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpTerritoryDecayManager.cpp Fix some includes all over the place 2025-08-13 19:38:21 +02:00
ICmpTerritoryDecayManager.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpTerritoryInfluence.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpTerritoryInfluence.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpTerritoryManager.cpp Mod Interface: Enable setting territory visibility 2024-12-30 22:23:05 +01:00
ICmpTerritoryManager.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpTest.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpTest.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpTurretHolder.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpTurretHolder.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpUnitMotion.cpp Fix formation reshuffling after entity rename 2026-02-04 11:05:07 +01:00
ICmpUnitMotion.h Fix formation reshuffling after entity rename 2026-02-04 11:05:07 +01:00
ICmpUnitMotionManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpUnitMotionManager.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpUnitRenderer.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpUnitRenderer.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpUnknownScript.cpp Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpUnknownScript.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpValueModificationManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpValueModificationManager.h Fix includes in source/simulation2 2025-08-08 07:10:11 +02:00
ICmpVisibility.cpp Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpVisibility.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpVision.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpVision.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00
ICmpVisual.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpVisual.h Fix some includes all over the place 2025-08-13 19:38:21 +02:00
ICmpWaterManager.cpp Revert non-ASCII characters from source and configuration files introduced in 157c6af18e. 2023-12-03 00:30:12 +00:00
ICmpWaterManager.h Fix includes in source/simulation2 2025-08-07 20:00:49 +02:00