docs: map radar contacts now render (grid population + projection fix)
Update GAUGE_COMPOSITE.md + CLAUDE.md: the radar plots the enemy contact inside the FOV wedge. Record the two fixes (engine RebuildEntityGrid populating the dropped entity feed; the delta-relative blip projection replacing the wrong camera-matrix point transform) and narrow the remaining map work to the authentic pip/name infrastructure + SetTargetRange zoom. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
fb3ed38fa7
commit
ab039bcc1e
+13
-4
@@ -417,10 +417,19 @@ fill the gaps (bind not-yet-needed ids to a shared read-only pad member).
|
||||
stubs the map was the first consumer of, each fixed: Sensor `radarPercent` went negative (un-normalized
|
||||
`heatEnergy` in the not-byte-exact heat-leaf → guarded to no-penalty); `ResolveOperatorEntity` returned
|
||||
NULL (→ viewpoint fallback); `MapName::ExtractFromEntity` didn't NULL-guard the entity. ⚠ Debug via
|
||||
`BT_MAP_LOG` (phase/draw trace). FOLLOW-UPS: contacts show 0 (the `GetStaticEntitiesWithinBounds`/
|
||||
`GetMovingEntitiesWithinBounds` classification finds nothing — the enemy dummy isn't in the spatial
|
||||
lists); the pip/name/video-object infrastructure (`GetVideoObject`/`LookUpPip`/`GetNameID`) is stubbed
|
||||
so contacts/labels need it; radarRange is a 500m default until `SetTargetRange` is un-stubbed.
|
||||
`BT_MAP_LOG` (phase/draw trace). **CONTACTS NOW RENDER** (2026-07): two more fixes landed the enemy
|
||||
blip inside the FOV wedge. (a) The gauge renderer's entity grid was NEVER populated — the port dropped
|
||||
`ExecuteImplementation`'s InterestingEntity feed; added `GaugeRenderer::RebuildEntityGrid()` (engine)
|
||||
that fills `movingEntities` from the world's DynamicMaster+Replicant entities (the vehicles; AllEntity
|
||||
floods it with ~311 cls-0x5E props), called from the map's guarded Execute; DrawMoving draws a cross+box
|
||||
blip for cls-0xBB9 mechs (the pip table is stubbed). (b) The blip PROJECTION was wrong — `worldToView`
|
||||
is a camera matrix whose baked scale is wrong for a point transform (a 120u contact projected to 167px
|
||||
not 44px); fixed by projecting `delta = entity - viewpoint` directly (rotate by −heading, scale by
|
||||
pixelsPerMeter). Verified: the 120u enemy (dsq=14400, cls 0xBB9, own=0) plots at (0,44) inside the
|
||||
wedge. FOLLOW-UPS: the authentic pip symbol/name/video-object infrastructure
|
||||
(`GetVideoObject`/`LookUpPip`/`GetNameID`, still stubbed → the cross-blip is the stand-in); the
|
||||
blip-vs-wedge rotation convention (reads ahead/in-wedge, correct); `SetTargetRange` (radar zoom, 1km
|
||||
default).
|
||||
|
||||
### Reconstruction-technique additions (durable)
|
||||
- **x87 float math Ghidra drops** (`FUN_004dcd94()`/`FUN_004dcd00()` show no args = FPU-stack operands):
|
||||
|
||||
Reference in New Issue
Block a user