Original galaxy camera mouse controls
Offline evidence from pinned client SHA256 6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93 and its original local frozen resource. No game process, input event, network request or game file modification was used.
The local Custom.4.2.binds and installed KeyboardMouseOnly.binds prove the keyboard actions but contain no galaxy drag-button mapping. Current map AS components/Content.as handles left-button UI focus; it does not establish camera drag semantics. These sources alone cannot justify swapping the tool's mouse buttons.
Original resource and native consumers
research/Extract-OriginalGalaxyMouseControls.py resolves the actual pointer graph from resource 86ec03fba621526059fc6812faca6f10adcb63cb, SHA256 29a90189d0bb238c88d09dcc0f15ff751ea29aa208b1a90894ef3b47f8942e5f. The FRES name entry galaxymapcontrols has ID E800A1BD; its frozen root (E800A1BD,42B3EE19,686,1840) contains 100 control nodes. The recorded subset has 46 mouse/camera nodes, with source pointers and original scalar values preserved in artifacts/galaxy-query-research/power-outer-sources/original-galaxy-mouse-controls.json.
InputChord initialization 913450 reads the original output at config+10, source at +18, required-on vector at +20/count+28 and required-off vector at +30/count+38. It binds the original CSM handle 5F32448. Static initializer 87800 writes 5F32440=512CBF8; the first CSM entry is 8D70E0. That function ANDs all required-on inputs' +24 active bytes and ANDs the negation of each required-off input, then forwards the source's float/active state. Thus the graph's two lists are independently confirmed by original executable logic.
InvertValue CSM initializer 87890 binds 512CBE0 to 8D6F20, which XORs the source float with the sign bit. This confirms the horizontal translation inversion, independently of the node's name.
3B36F10 binds CamPitch, CamYaw, CameraCraning, CamCrane, CamDolly, TranslateX and TranslateY to the original GalaxyMapCamera. 3B507D0 consumes those nodes through the camera's +70 interface, accumulating pitch/yaw and translating along yaw-oriented horizontal axes plus world Y.
Galaxy behavior
| Buttons held | Horizontal mouse axis | Vertical mouse axis |
|---|---|---|
| Left only | Yaw | Pitch |
| Right only | Yaw | World Y / crane |
| Left and right | Horizontal-plane translation from inverted X | Horizontal-plane translation from Y |
The original chains are:
MouseLeft <- UI_Mouse_Button0;MouseRotate <- MouseLeft, blocked by MouseIsOverGUI.MouseCrane <- UI_Mouse_Button1;MouseCameraCraning <- MouseCrane, blocked by MouseRotate.- Galaxy
MouseTranslate <- MouseRotate, requiring MouseCrane and excluding IsInSystemMap. - MouseCamPitch requires MouseRotate and excludes MouseTranslate.
- Two MouseCamYaw nodes allow either MouseRotate or MouseCrane, excluding MouseTranslate and GUI activity.
- MouseCamCrane requires MouseCrane and excludes MouseTranslate and GUI activity.
- MouseTranslateX/Y require MouseTranslate; X is the actual InvertValue output, Y is the scaled positive axis.
Mouse X/Y scale factors in this graph are both original float 0.0020000000949949026; scroll scale is 0.0005000000237487257. These are graph factors, not a claim that the tool duplicates the entire original frame-rate/speed/zoom stack.
There is a separate system-map branch: Button0 translation requires IsInSystemMap and excludes PlanetaryViewOn and MouseIsOverGUI. It must not replace Galaxy behavior.
Raw original MouseYAxis positive causes positive world Y in 3B507D0, using basis constant 50CB0E0=(0,1,0). The physical axis ID is 0x01000009. Its sign relative to WinUI screen-space dy has not been validated with a running client. Exact live sensitivity and acceleration also remain unverified.
Floor selector
The original player guide's printed pages 80–83 explicitly describe an XZ floor, vertical star connectors, a selector ring that snaps to connector intersections, and keyboard horizontal/height movement. GalaxyFloorSelector implements this geometry with caller-supplied capture/release thresholds and world ring radius. Those tool parameters remain explicit; no original numeric sticky threshold or ring radius was recovered here. Four focused tests cover projected intersections, perspective distances, filtered-target release and clipped XZ geometry.