Map module:
- In-game overlay (UiService) with full map chrome matching the popout
- Six themes (S3 Dark, Railroader Classic, Night Mode, Hi-Vis, Retro Terminal, Custom)
- Per-element custom color editor with hex input and live R/G/B/A sliders
- Independent window and map opacity controls
- Theme and opacity changes apply from both the in-game overlay and the popout window
- Renamed module display name from "Map Popout" to "Map Module"
Native engine:
- SnapshotTheme() helper reduces per-frame mutex acquisitions from two to one
- Toolbar button text color auto-contrasts against the button background
- Compass colors driven by theme data
README:
- Logo, screenshots, and videos for all features
- Physics Optimizer before/after profiler comparison
- Correct MapEnhancer link (maintained fork)
Replace the bare-bones stock map with a full Dear ImGui in-game overlay
(M key). The overlay shares the same toolbar and compass as the OS popout
window: Follow, Pop Out, Gear, rotation compass.
Pop Out button is now in the bottom toolbar where it is actually visible.
Pressing it (or F10) closes the overlay, waits 0.5 s for the camera to
release, then opens the OS popout window. Closing the popout restores the
overlay if it was running when the launch was triggered. Pressing M while
the popout is open closes the popout and reopens the overlay.
Harmony patches intercept MapWindow.Toggle and Show so base-game "Show on
map" links and the map hotkey both route through the S3 overlay. MapBypass
lets internal S3 calls through without triggering the patch recursively.
Camera ownership is enforced in LateUpdate so no base-game script can reset
targetTexture before the camera renders. Object.Destroy replaces Release()
on both RT teardown paths so the D3D address stays live until end-of-frame
and cannot be recycled into a new RT mid-frame.