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:
co-authored by
Claude Opus 4.8
parent
89ddd49283
commit
9f0a7c52df
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user