The map the pegman can be dropped on; see PegmanMapLike.
The controller entered on a successful drop; see PegmanNavLike.
Whether the session has reached a terminal state (dropped or cancelled).
Terminal cancel (Escape, pointer cancel, or teardown): nothing is entered.
Terminal drop. Over the map: unproject the container-relative pixel and enter first person there (pitch PEGMAN_ENTRY_PITCH, bearing kept). Anywhere else: cancel silently.
Pointer clientX at release.
Pointer clientY at release.
Whether the drop landed on the map (first person was entered).
Hit-test the current pointer position against the map's canvas container.
Pointer clientX.
Pointer clientY.
Whether the pointer is over the map (highlight the ghost).
The pure state machine behind one pegman drag: hit-testing against the map's canvas container while the ghost moves, and the terminal outcomes — a drop OVER the map unprojects the container-relative pixel and enters first person there at PEGMAN_ENTRY_PITCH (the map's current bearing is kept by omission); a drop anywhere else, an Escape press, or a pointer cancel ends the drag silently. Every terminal call is one-shot: once the session is
done, further calls are no-ops.The DOM-owning widget feeds this from pointer events; keeping the logic here makes the drop wiring and the cancel paths unit-testable without a browser.