your corpse answers the mouse, and a cinematic's last holes close
- a corpse is a body you can hover, cursor and click: it enters the same ray pass as units with the winner switched on type at publish (the reference's own shape — one trace over every object), the cursor classifier is transcribed whole (lootable-by-me → the pickup cursor, grayed by range; else the insignia leg behind the learned-skill latch; your own body falls through to the clear), and right-click is "not mounted AND lootable" → CMSG_LOOT; CORPSE_FIELD_FLAGS bit 5 is the PvP insignia flag, not "reclaimable" as an old note had it; the widening also caught that a GameObject anywhere on screen could steal the click from a nearer corpse, and that a left-click on a body cleared your target as if you had clicked ground
- the cinematic sweep closes eleven holes: a shot plays its sequence band's WIDTH, not its end — two shipped fly-bys band away from zero and ran long with their opening frames frozen (the Night Elf intro measured 102333 → 102000 ms); CMSG_NEXT_CINEMATIC_CAMERA announces every shot, the first included — the old "between shots" reading meant it was sent NEVER, since every 1.12 sequence row carries exactly one camera; the ack invariant is stated once (one CMSG_COMPLETE_CINEMATIC per accepted trigger, over-acking tolerated, under-acking never — a dropped ack despawns the world around you until relog); the hardware cursor hides for the shot; and the music cut lands in the frame that starts it — it was one frame late, exactly long enough for a first login's zone fanfare to start under the narration and be stamped as played
- RunBinding exists, and a fly-by stops handing the world its mouse: CinematicFrame's OnKeyDown hands the SCREENSHOT chord back to its binding through RunBinding, a global we never had, so every press during a fly-by raised and took no picture; and the mouse was fully live under a shot — right-drag turned the character, clicks picked targets through the flying camera, both buttons walked the body — so the pointer now reads as over the UI while a shot plays
- AdvanceTime and ReplaceIconTexture are carved off the bytes: AdvanceTime really is a no-op in the reference (its one reachable call is mov eax,1; ret), ReplaceIconTexture is a material swap over a model's type-14 texture slots that stores nothing on the widget, and SetModel(nil) RAISES — the "documented clear" our binding claimed was invented, not read; and the addon roster now says WHOSE package is short when a .toc names files the folder doesn't hold — nine of the corpus's twenty-nine load failures are the addon's own manifest, which the real client also shrugs off ("Couldn't open %s", carry on), so they stop reading as our defects
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -504,6 +504,7 @@ mod macos {
|
||||
world_assets: Option<ResMut<WorldAssets>>,
|
||||
mode: Res<super::DisplayedCursor>,
|
||||
rig: Res<CameraControl>,
|
||||
cinematic: Option<Res<crate::cinematic::Cinematic>>,
|
||||
mut focus: MessageReader<bevy::window::WindowFocused>,
|
||||
// None of the `Local`s below is a [`crate::ui_script::VmMemo`], deliberately (decision
|
||||
// 1290's sweep): every one of them remembers something about the **OS** — what we last told
|
||||
@@ -551,7 +552,15 @@ mod macos {
|
||||
}
|
||||
}
|
||||
}
|
||||
let looking = rig.is_looking();
|
||||
// **A cinematic hides the pointer too**, and on this platform it can only be done here:
|
||||
// the reference's `0x58b590(0)` at StartCinematic / `(1)` at End (wow-re
|
||||
// `ui/scratch/cinematic-camera-law.md` §3.4). `crate::cinematic` writes
|
||||
// `CursorOptions.visible`, which is the right lever everywhere else and is *inert on
|
||||
// macOS* for the reason this module exists — winit's cursor-rect route does not survive a
|
||||
// continuously-redrawing Metal view. So the fly-by's pointer is hidden by joining the
|
||||
// look session's own `NSCursor::hide()`/`unhide()` pair, which keeps AppKit's app-global
|
||||
// hide counter balanced across both reasons instead of racing a second one against it.
|
||||
let looking = rig.is_looking() || cinematic.is_some_and(|c| c.is_playing());
|
||||
let stem = mode.0.stem();
|
||||
// The held payload's cursor wins over the classified mode (falls back to the mode cursor
|
||||
// when nothing is held, or its icon hasn't resolved/decoded this frame). The KEY names what
|
||||
|
||||
Reference in New Issue
Block a user