Radar: drop the blip when a mech dies (restore the authentic interest-removal)

Playtest: "after I destroyed the mech the red blip was still on my radar."  The
authentic engine adds/removes radar contacts through the interest feed
(GaugeRenderer::NotifyOfNewInterestingEntity / NotifyOfBecomingUninterestingEntity),
and the game decides what's a contact -- a dying mech becoming uninteresting is
removed, so the blip drops.  The port DROPPED that feed and rebuilds the radar grid
every frame from EVERY dynamic mover (RebuildEntityGrid), so it never removed the
dead one and the red blip lingered on the frozen wreck (the wreck stays as an entity
by design; only its model sinks/buries).

Fix: in RebuildEntityGrid, skip a destroyed/disabled mover (GetSimulationState() ==
2 || 9 -- the movementMode wreck latch, unified with simulationState) so it leaves
the moving/red-contact grid.  Live movers unaffected; the blip drops on death.

Verified (BT_MAP_LOG): the killed enemy (ent cls=0xbb9) is drawn ONCE at the
death-transition frame (the 1-frame lag before movementMode latches to 9) then never
again for the rest of the session, while the owner keeps drawing every cycle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-20 22:19:04 -05:00
co-authored by Claude Opus 4.8
parent 89ddd49283
commit 9f0a7c52df
+17 -2
View File
@@ -3643,7 +3643,18 @@ void
while ((entity = master_iterator.ReadAndNext()) != NULL)
{
if (entity->IsDerivedFrom(*Mover::GetClassDerivations()))
movingEntities.Add(entity);
{
// DEAD-MECH RADAR DROP (2026-07-20): a destroyed/disabled mover
// (movementMode 2||9 == the wreck latch, unified with
// simulationState) is no longer a live sensor contact. The
// authentic engine removes it via the interest feed
// (NotifyOfBecomingUninterestingEntity); the port's per-frame
// grid-rebuild dropped that feed, so the red blip lingered on the
// frozen wreck after the kill. Skip it -> blip goes away on death.
unsigned st = entity->GetSimulationState();
if (st != 2 && st != 9)
movingEntities.Add(entity);
}
else
staticEntities.Add(entity);
}
@@ -3655,7 +3666,11 @@ void
while ((entity = replicant_iterator.ReadAndNext()) != NULL)
{
if (entity->IsDerivedFrom(*Mover::GetClassDerivations()))
movingEntities.Add(entity);
{
unsigned st = entity->GetSimulationState(); // dead-mech radar drop (see the master loop above)
if (st != 2 && st != 9)
movingEntities.Add(entity);
}
else
staticEntities.Add(entity);
}