acdream/tests/AcDream.App.Tests/Physics
Erik 2bc81480d4 feat(ui): AD-109 — arm the login wormhole at the char-select Enter click
USER-DIRECTED deviation from retail (register row AD-109, same commit):
retail presents the empty pre-player gameplay screen — black behind the
retained UI — from the Enter click (CPlayerSystem::LogOnCharacter
@0x0055F890 -> CM_Login::SendNotice_BeginEnterWorld @0x006AD810, UI mode
0x10000008) until CreatePlayer raises SmartBox::teleport_in_progress
@0x00451C20 and gmSmartBoxUI::UseTime @0x004D6EAB begins TAS_TUNNEL. The
user prefers the tunnel to cover that whole wait.

- ILocalPlayerTeleportNetworkSink.ArmLoginTunnel: begins the login
  wormhole presentation at the Enter click, consuming the sequencer's
  begin-edge events SYNCHRONOUSLY (the Enter command blocks the update
  thread for the whole ServerReady round trip, so a deferred first tick
  would leave exactly the black window this deviation removes). The
  enter cue plays at the click: retail's own rule is cue-at-animation-
  begin (Sound_UI_EnterPortal @0x004D638E, unconditional inside
  BeginTeleportAnimation), and the animation begin moved to the click.
- Armed pre-reveal pump: tunnel animates across the round trip
  (worldReady pinned false, sequencer holds in Tunnel); the hold clock
  accumulates from the click.
- Adoption: the Runtime login reveal ADOPTS the running presentation
  (no re-Begin, no second cue); rejected EnterWorld (lifecycle back to
  AwaitingSelection) disarms and retires the tunnel.
- Wired at the ONE host edge every entry route shares:
  ILiveSessionLifecycleHost.ApplySelectedCharacter (direct connect,
  roster Enter, enter-after-create) via
  LiveSessionSelectionBindings.ArmLoginTunnel (default no-op keeps
  headless and every existing construction site unchanged).
- ILocalPlayerLoginLifecycleSource: typed seam (not a stored delegate —
  the frame-phase owner delegate-field guard) projecting the Runtime
  character-selection lifecycle for the disarm edge.
- Frame contract update: [login-frames] over a login is tunnel -> world
  from the click — no void, and no black between click and world.

Tests: 4 new armed-tunnel tests (arm/adopt/disarm/frame-shape); App
suite live-DAT 5516 passed / 3 skipped (baseline 5512/3 + 4 new).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 13:42:30 +02:00
..
C3cF1ProductionWiringTests.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
DeferredLiveEntityMotionRuntimeBindingsTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +02:00
InboundInterpretedMotionFactoryTests.cs fix(combat): apply server attack motions locally 2026-07-11 13:34:55 +02:00
Issue270ProductionWiringTests.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
LiveCollisionAssetPublisherTests.cs feat(streaming): shadow-publish flat collision assets 2026-07-25 16:38:54 +02:00
LiveEntityCollisionBuilderTests.cs refactor(physics): hoist the live-entity collision builder to Runtime (#330 groundwork) 2026-08-07 01:49:13 +02:00
LiveEntityInboundAuthorityGateTests.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
LiveEntityMotionRuntimeControllerTests.cs fix(interaction): restore distant use after runtime cutover 2026-08-03 09:36:53 +02:00
LiveEntityNetworkBranchRoutingTests.cs refactor(physics): collapse OnPosition's dual player/NPC remote tail into one 2026-08-04 18:07:54 +02:00
LiveEntityNetworkOnPositionCollapseMatrixTests.cs feat(ui): AD-109 — arm the login wormhole at the char-select Enter click 2026-08-17 13:42:30 +02:00
LiveEntityNetworkRemoteFarSnapIntegrationTests.cs feat(physics): C4 route 4b-3 — remote teleport + cell-less through the canonical placement 2026-08-04 16:00:10 +02:00
LiveEntityNetworkRemoteSteadyStateIntegrationTests.cs feat(physics): C4 route 4b-3 — remote teleport + cell-less through the canonical placement 2026-08-04 16:00:10 +02:00
LiveEntityNetworkRemoteTeleportPresentationTests.cs feat(ui): AD-109 — arm the login wormhole at the char-select Enter click 2026-08-17 13:42:30 +02:00
LiveEntityOrdinaryPhysicsUpdaterTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +02:00
LiveEntityPvpBitfieldSyncTests.cs fix(physics): #297 — keep the PWD bitfield live so PK status reaches the client 2026-08-03 20:59:01 +02:00
PlayerMovementHiddenTests.cs refactor(physics): delete legacy PhysicsEngine.Resolve/ResolvePlacement/HasCellSurface (C5a, AP-1/AD-1) 2026-08-05 14:11:31 +02:00
ProjectileControllerTests.cs fix(physics): C4 route 5 — projectile authoritative placement (#276 partial) 2026-08-04 21:03:41 +02:00
PvpBitfieldSurvivesAppearanceRebuildTests.cs refactor(physics): hoist the live-entity collision builder to Runtime (#330 groundwork) 2026-08-07 01:49:13 +02:00
RemoteInboundMotionDispatcherTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RemotePhysicsUpdaterTests.cs fix(physics): close the AP-156 fix review — real containment oracle, type-level invariant, AP-158 2026-08-06 16:44:48 +02:00
RemotePlacementDriveFixture.cs fix(physics): route remote Positions on contact, not walkability (AP-140) 2026-08-04 11:53:48 +02:00
RemoteTeleportHookTests.cs feat(vfx): port retail hidden and teleport presentation 2026-07-14 14:59:48 +02:00