acdream/tests/AcDream.Core.Tests/Physics
Erik b52967def3 fix(physics): AP-156 — flood the BSP sphere where the geometry is, not at the part origin
The AP-152 retail review (docs/research/2026-08-06-ap152-review-retail.md)
FAILED `4abd1b5e` and is right. `ShadowObjectRegistry.BuildFloodSpheres` took
each physics-BSP part's ROOT BOUNDING SPHERE RADIUS
(FlatCollisionAssetBuilder.cs:393 -> LiveEntityCollisionBuilder.cs:137) and
centred it on the PART ORIGIN (ShadowShapeBuilder.cs:194), discarding the root
sphere's own Origin.

Re-measured independently against the installed client_portal.dat, reproducing
the reviewer's numbers exactly: 376 of 973 physics-BSP parts have
|origin| > radius/2, worst 20.762 m on a 27.708 m sphere (gfx 0x010036DD,
Setup 0x0200129A). Over the 172 Setups AP-152 moved onto that path the emitted
flood FAILED TO CONTAIN the object's own BSP sphere for 170 of them (73
CylSphere-bearing, 97 Sphere-bearing), worst shortfall 9.911 m on Setup
0x02000255 — whose one part's sphere sits 9.911 m above the part origin — and
for 43 the post-AP-152 flood was strictly SMALLER than the pre-AP-152 one.
Indoor flooding is 3-D (CellTransit.cs:601 routes every id & 0xFFFF >= 0x0100
candidate through FindTransitCellsSphere), so a tall prop or door slab was
absent from EnvCells it physically occupies and therefore never a broadphase
candidate there (TransitionTypes.cs:3763 iterates only entries already in the
cell). That is the #98 / #168 class AP-152 exists to remove.

Retail, re-disassembled from the PDB-paired binary (check_exe_pdb.py MATCH,
CodeView GUID 9e847e2f-777c-4bd9-886c-22256bb87f32), every address resolved
back through named-retail/symbols.json:

  CGfxObj::physics_sphere is [gfxobj+0x74] (physics_bsp is [+0x78], as
  CPartArray::CacheHasPhysicsBSP @0x00518110 reads at 0x00518127), and
  acclient pseudo-C 0x00534b5b assigns it BSPTREE::GetSphere(physics_bsp).

  BSPTREE::GetSphere @0x005397e0
    8b01        mov eax,[ecx]     ; BSPTREE::root_node
    83c004      add eax,4         ; past BSPNODE::vfptr -> CSphere sphere
  So retail's per-part flood sphere IS the BSP root bounding sphere,
  ORIGIN INCLUDED (acclient.h: BSPNODE { vfptr; CSphere sphere; ... },
  CSphere { Vector3 center; float radius; } -> radius at +0xc).

  CPhysicsObj::find_bbox_cell_list @0x00510fc0 adds the object's own cell and
  then walks the PART ARRAY: 0x00511012 call 0x518160
  (CPartArray::calc_cross_cells_static), which dispatches [edx+0x7c] with
  (num_parts, parts, cellarray). Its EnvCell body,
  CEnvCell::find_transit_cells @0x0052cae0:
    0x0052cb31  mov edx,[eax+0x20]   ; CPhysicsPart::gfxobj (CGfxObj**)
    0x0052cb36  mov esi,[ecx+0x74]   ; physics_sphere (else +0x90 drawing)
    0x0052cb4c  add eax,0x30         ; CPhysicsPart::pos
    0x0052cb5a  call Position::localtolocal   ; transform the sphere CENTRE
    0x0052cb65  fadd [esi+0xc]       ; only NOW the radius
  Retail transforms the centre through the part's own Position before it ever
  touches the radius. Carrying the radius alone is not an approximation of
  that; it is a different sphere.

Changes:

* `ShadowShape` gains `BoundsCenter` — the bounding sphere's centre in the
  shape's own local frame, scaled like LocalPosition and Radius. Zero for
  Cylinder/Sphere shapes, whose LocalPosition already IS their centre.

* `ShadowShapeBuilder.FromSetup` gains a `physicsBspBounds` resolver that
  supplies radius AND centre from ONE call, replacing the placeholder radius
  plus a downstream substitution. `LiveEntityCollisionBuilder` now holds a
  single `Func<uint, FlatCollisionSphere?>` and derives its dispatch predicate
  from it, so the gate and the geometry cannot disagree and the radius cannot
  be taken while the origin is dropped. That split is what produced this bug;
  it no longer exists.

* `FromLandblockBspParts` carries the centre too. A landblock-baked part array
  is the same CPartArray walk, so stair runs, fences and rock clusters had the
  identical defect. Both storage forms (flat BSP and the graph fallback) are
  covered.

* `BuildFloodSpheres` places each sphere at
  partWorldPos + rotate(BoundsCenter, partWorldRot), composed exactly as the
  ShadowEntry rows are.

* The 10-sphere clamp now applies to the CYLSPHERE branch only. Retail's clamp
  is inside CObjCell::find_cell_list @0x0052b9f0
  (0x0052ba21 cmp eax,0xa / 0x0052ba28 mov ebp,0xa); the BSP walk has none and
  the sorting-sphere overload @0x0052b990 takes one sphere. 7 installed Setups
  carry more than 10 physics-BSP parts (max 49, Setup 0x02001A91) and their
  tail parts were dropped from the flood entirely. Without this the new
  containment assertion would have covered shapes production never floods
  from.

Register. AP-155 was two divergences with different code paths, populations
and gates under one id; it is NARROWED to its static-publication half and its
flood half is split out as AP-156 WITH ITS DIRECTION CORRECTED. AP-155(b)
recorded the approximation as over-inclusive — "floods MORE cells rather than
fewer, the safe direction for membership" — and that false direction was the
stated reason the residual was safe to defer. It was under-inclusive for 170
of 172. AP-156 records the correction, this fix, and the one genuine residual:
acdream's sphere-vs-portal traversal where retail walks each part's sphere
against the cell's own portal planes. AP-155(b)'s "acdream approximates
retail's bounding BOX" was wrong too — find_bbox_cell_list forms no box.
AP-157 filed for the review's F4: retail's third branch floods from ONE
CPartArray::GetSortingSphere @0x00518b00 ([partArray+0x54]+0x70 =
CSetup::sorting_sphere; 4,154 of 5,935 installed Setups carry a non-zero one)
where acdream floods from every Sphere shape, and acdream's cylinder flood
ignores CylHeight. Deliberately NOT bundled here: different branch, disjoint
population, different live gate. Active AP rows 107 -> 109, literal count.

Tests. Both flood tests the review named substituted a CONCENTRIC Radius = 14f
at LocalPosition = Zero — the one configuration in which the defect cannot
appear. Every fixture is now off-centre by default, and
`FromSetup_CylSphereAndBspSetup_FloodsTheBspFootprint` drives the production
`physicsBspBounds` seam instead of hand-substituting. Five new facts: the
flood centres on BoundsCenter not the part origin; it rotates BoundsCenter by
the part rotation; it caps cylspheres at ten but never the BSP parts; the
landblock path carries the scaled centre in both storage forms; and an
installed-DAT containment sweep asserting every emitted BSP flood sphere
contains that part's real bounding sphere at entity scale 1.75, behind four
external controls — 973 parts, 376 off-centre, 172 affected, and 170
would-fail-if-the-origin-were-discarded, the last of which fails if the
population ever stops exercising the field.

Nine sabotages, each reverted and re-verified:
  A drop BoundsCenter from the flood       -> 3 Core
  B rotate by entity rot, not part rot     -> 1 Core (the rotation fact only)
  C FromSetup discards the origin          -> 1 Core + 2 App + 1 Content
     (the shipped defect, now caught in three projects)
  D drop entScale on BoundsCenter          -> 2 App + 1 Content
  E landblock flat branch drops the centre -> 1 Core
  F landblock graph branch drops it        -> 1 Core
  G drop partScale on the landblock centre -> 1 Core
  H re-apply the 10-cap to every branch    -> 1 Core
  I remove the cylsphere cap               -> 1 Core
AP-152's own two sabotages re-run against this tree: the step-0 gate disabled
still reddens exactly its five facts with Headless 89/89 green, and
cylinder-first flooding still reddens exactly one.

Clean Release build after deleting all 44 bin/obj: 0 errors, 21 pre-existing
warnings. Complete suite 11,208 passed / 4 skipped / 0 failed, +5 on the
11,203 baseline at 4abd1b5e — Core 4264 -> 4268, Content 126 -> 127, App
unchanged (one rename, not an addition). No new skips.

NOT yet gated live. This moves shadow-cell membership for real objects, in
both directions, and the connected session must look for both: props and doors
that START blocking from a neighbouring cell (the 73 CylSphere+BSP Setups),
AND ones that STOP blocking (the 99 Sphere+BSP Setups can shrink; 43 shrink
below their pre-4abd1b5e size, which is the regression this fixes). Tall
indoor props and door slabs — the ones whose sphere sits metres above the part
origin — are where the change is largest.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 15:52:04 +02:00
..
Motion feat(physics): P5 commit 1 - port ConstraintManager leash distance constants (#167) 2026-07-30 11:54:35 +02:00
A6P7DispatchRulesTests.cs feat(physics): port retail projectile integration 2026-07-14 11:43:11 +02:00
AnimationCommandRouterTests.cs feat(R2-Q4): adapter cutover — SetCycle/PlayAction rehosted on PerformMovement; Fix B / fast-path / stop-anim fallback / G17 gate DELETED 2026-07-02 21:41:27 +02:00
AnimationHookRouterTests.cs feat(anim): Phase E.1 hook router + GameWindow wiring 2026-04-18 16:30:23 +02:00
AnimationSequencerCutoverTraceTests.cs fix(runtime): align portal and movement presentation 2026-07-17 08:48:27 +02:00
AnimationSequencerTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
Ap10WaterSemanticsTests.cs fix(physics): AP-10 - restore retail's 0.1m dry-corner water sink-in; wire WATER_CONTACT_TS 2026-07-30 10:52:39 +02:00
Ap71EntryRestrictionGateTests.cs fix(physics): AP-129 review fix - port CanMoveInto/IsAllowedIn, stop failing closed 2026-07-30 11:36:11 +02:00
BSPQueryTests.cs fix #137 (mechanism 2): BSP full-hit stubs leaked sliding normals — the corridor absorbing wedge 2026-07-05 18:08:29 +02:00
BSPStepUpFixtures.cs feat(physics): Phase L.2.1+L.2.2 — BSP step-up and rooftop landing 2026-04-29 16:16:39 +02:00
BSPStepUpTests.cs fix(physics): restore retail path-6 collision response 2026-07-31 13:44:55 +02:00
BuildShadowCellSetTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
CameraCornerSealReplayTests.cs fix(physics): traverse prepared indoor portal topology 2026-07-27 00:02:44 +02:00
CellarLipWedgeTests.cs chore(p2): strip cellar-lip dispatch-trace probes after visual confirmation 2026-06-05 09:24:20 +02:00
CellArrayTests.cs feat(physics): Stage 1 — CellArray ordered/deduped cell collection (retail CELLARRAY) 2026-06-03 08:54:45 +02:00
CellarUpTrajectoryReplayTests.cs refactor(physics): delete legacy PhysicsEngine.Resolve/ResolvePlacement/HasCellSurface (C5a, AP-1/AD-1) 2026-08-05 14:11:31 +02:00
CellDumpRoundTripTests.cs feat(phys): A6.P3 #98 Step 2 — cell-dump probe + roundtrip test 2026-05-23 15:16:56 +02:00
CellGraphMembershipTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
CellGraphPopulationTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
CellMarchLandblockPreservationTests.cs fix(teleport D): cell-march preserves seed landblock id when no resident LB (no more lbX=0 outbound) 2026-06-22 13:38:48 +02:00
CellPhysicsPortalWiringTests.cs feat(physics): Phase 2 — wire CellBSP + Portals into CellPhysics 2026-05-19 16:52:20 +02:00
CellSurfaceTests.cs refactor(physics): remove parsed collision graphs 2026-07-25 18:21:19 +02:00
CellTransitAddAllOutsideCellsTests.cs fix(phys): #106 — outdoor membership crosses landblock boundaries (LandDefs global-lcoord port) 2026-06-09 23:10:59 +02:00
CellTransitCheckBuildingTransitTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
CellTransitFindCellListTests.cs feat(physics): Phase 2 — BuildingPhysics + CheckBuildingTransit 2026-05-19 17:34:38 +02:00
CellTransitFindCellSetTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
CellTransitFindTransitCellsSphereTests.cs fix(physics): traverse prepared indoor portal topology 2026-07-27 00:02:44 +02:00
CellTransitFindVisibleChildCellTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
CellTransitTests.cs T6 (BR-7) C4: straddle-only outside-add (A6.P5 widening DELETED) + #90 stickiness removed 2026-06-11 14:44:49 +02:00
CollisionExemptionTests.cs fix(physics): #299 — port retail's mover-side IsImpenetrable exemption branch 2026-08-03 20:13:05 +02:00
CollisionPrimitivesTests.cs feat(physics): port 9 collision primitives from acclient.exe (chunk_00530000.c) 2026-04-12 23:53:47 +02:00
CollisionShadowVerifierTests.cs perf(physics): cut production traversal to flat assets 2026-07-25 17:00:04 +02:00
CylSphereFamilyTests.cs fix #172: port the retail CCylSphere collision family (platform step-up) 2026-07-05 14:52:28 +02:00
DoorBugTrajectoryReplayTests.cs feat(net): port retail physics spawn and event timestamps 2026-07-14 00:22:17 +02:00
DoorCollisionApparatusTests.cs docs(physics): #165 diagnostic pass - rule out (a)/(b), stop at (c) 2026-07-30 10:01:11 +02:00
DoorSetupGfxObjInspectionTests.cs test(phys): A6.P4 door inside-out — locate cottage wall, identify corner-slide hypothesis 2026-05-25 08:34:52 +02:00
DoorwayMembershipReplayTests.cs test(core): commit doorway-threshold fixture for DoorwayMembershipReplayTests (portable) 2026-06-02 15:22:57 +02:00
EdgeSlideBackProbePrecipiceSlideTests.cs docs+test(physics): retire stale TS-1 row; file AD-53/AD-54 for its two acdream-only branches 2026-07-30 08:13:20 +02:00
EncumbranceSystemTests.cs feat(physics): Campaign P P1 - stat-coupled movement (burden/stamina/vitae) 2026-07-30 08:18:06 +02:00
EntityCollisionFlagsTests.cs fix(physics): TS-23 - plumb real PK/PKLite/Impenetrable mover flags 2026-07-30 09:52:55 +02:00
FindEnvCollisionsMultiCellTests.cs T6 (BR-7) C3: per-cell shadow architecture - flood registration, building channel, per-cell query; b3ce505 stopgap DELETED (closes #99) 2026-06-11 14:37:50 +02:00
FlatBspQueryDifferentialTests.cs fix(physics): traverse prepared indoor portal topology 2026-07-27 00:02:44 +02:00
FlatCollisionAssetBuilderTests.cs feat(physics): define deterministic flat collision assets 2026-07-25 14:52:47 +02:00
FlatCollisionInstalledDatTests.cs fix(physics): traverse prepared indoor portal topology 2026-07-27 00:02:44 +02:00
FramesStationaryFallTests.cs feat(#182): frames_stationary_fall round-trip in the kept transition internals (Slice 1b/1c) 2026-07-07 14:11:35 +02:00
GfxObjDumpRoundTripTests.cs feat(phys): A6.P3 #98 — GfxObj dump infrastructure (ACDREAM_DUMP_GFXOBJS) 2026-05-23 20:24:26 +02:00
HandleAllCollisionsTests.cs feat(vfx): port retail hidden and teleport presentation 2026-07-14 14:59:48 +02:00
HumanoidMotionTableRootMotionTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
IndoorContactPlaneRetentionTests.cs fix(physics): hold retail cell across inner retries 2026-07-31 12:40:50 +02:00
IndoorWalkablePlaneTests.cs Revert "fix(physics): remove per-frame indoor walkable-plane synthesis" 2026-05-20 09:17:24 +02:00
InitialPlacementOverlapTests.cs refactor(physics): delete legacy PhysicsEngine.Resolve/ResolvePlacement/HasCellSurface (C5a, AP-1/AD-1) 2026-08-05 14:11:31 +02:00
InterpolationManagerTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
InWorldLinkGuardTests.cs fix(R4-V5): remote transition links stripped by the detached-object guard - door swings snapped (adds register TS-40) 2026-07-03 15:10:16 +02:00
Issue98CellarUpReplayTests.cs test(phys): A6.P3 #98 Step 3 — deterministic replay harness 2026-05-23 15:25:40 +02:00
Issue108CellarAscentViewerReplayTests.cs #108-residual apparatus: vertical cellar-ascent viewer harness - membership/viewer layer EXONERATED 2026-06-12 22:05:06 +02:00
Issue133DungeonTeleportPrefixTests.cs refactor(physics): delete legacy PhysicsEngine.Resolve/ResolvePlacement/HasCellSurface (C5a, AP-1/AD-1) 2026-08-05 14:11:31 +02:00
Issue137CorridorSeamInspectionTests.cs fix #137 (window climb): the player's collision capsule topped out at 1.2m — head sphere 0.63m too low 2026-07-05 19:57:11 +02:00
Issue137CorridorSeamReplayTests.cs fix #137 (window climb): the player's collision capsule topped out at 1.2m — head sphere 0.63m too low 2026-07-05 19:57:11 +02:00
Issue137SlidingNormalLifecycleTests.cs fix #137 (corridor phantom resolved): slide_sphere opposing branch returns Collided; the 'wall' was synthetic 2026-07-05 18:27:40 +02:00
Issue147ArwicBuildingsDumpTests.cs fix(physics): #147 — far-town city/perimeter walls had no collision (portal-less buildings skipped) 2026-06-24 16:24:48 +02:00
Issue165RemoteWallPenetrationDiagnosticTests.cs docs(physics): #165 diagnostic pass - rule out (a)/(b), stop at (c) 2026-07-30 10:01:11 +02:00
Issue175HubDoorPoseInspectionTests.cs fix #175 (take 2): the cycle lookup used the bare style key — silent no-op 2026-07-05 17:10:19 +02:00
Issue180CorridorSweepHysteresisReplayTests.cs fix #180 (root): retail adjust_to_plane - PathClipped stops now resolve to the contact point, not a step boundary 2026-07-06 17:20:46 +02:00
Issue182CrowdJumpTests.cs feat(#182): route player collision response through the ported UpdateObjectInternal chain (Slice 2b/2c) 2026-07-07 14:25:47 +02:00
Issue185OutdoorStairsSeamReplayTests.cs test(physics): harden tight-gap collision controls 2026-07-31 12:17:35 +02:00
Issue186ConnectorCellGeometryInspectionTests.cs fix(#186): render side-cull mis-sided thin connectors — use dat PortalSide bit, not AABB centroid 2026-07-08 15:06:33 +02:00
Issue188FadingDoorMotionTableInspectionTests.cs feat(#188): fading-wall + sliding-door translucency; hold open past animation settle 2026-07-09 09:17:50 +02:00
Issue265SteepSlopeCaptureBisectTests.cs fix(physics): #265/#166 - stop zeroing grounded residual velocity, wire GroundNormal 2026-07-30 19:28:28 +02:00
Issue273HoltburgTightGapReplayTests.cs test(physics): harden tight-gap collision controls 2026-07-31 12:17:35 +02:00
Issue176177SeamTransitLagTests.cs docs+test #176/#177: 12 mechanisms refuted, apparatus shipped, probe protocol staged 2026-07-05 21:20:03 +02:00
LandDefsBlockOffsetTests.cs feat(physics #145): Slice 1 — Position/Frame types + LandDefs.GetBlockOffset (0x0043e630) 2026-06-21 10:30:20 +02:00
LandDefsTests.cs fix(phys): #106 — outdoor membership crosses landblock boundaries (LandDefs global-lcoord port) 2026-06-09 23:10:59 +02:00
LandingBounceSeedingTests.cs fix(physics): #265 landing-bounce family - retail check_contact seed + velocity-free landing commit 2026-07-30 20:12:06 +02:00
MissileCollisionRulesTests.cs feat(physics): port retail projectile integration 2026-07-14 11:43:11 +02:00
MotionCommandCatalogDatTests.cs feat(L.1b): dual MotionCommand catalog — AceModern runtime + Retail2013 conformance 2026-06-30 22:13:36 +02:00
MotionCommandCatalogTests.cs feat(L.1b): dual MotionCommand catalog — AceModern runtime + Retail2013 conformance 2026-06-30 22:13:36 +02:00
MotionCommandResolverTests.cs fix(anim): Phase L.1b route motion commands 2026-04-28 10:46:22 +02:00
MotionInterpreterDoMotionFamilyTests.cs feat(R3-W5): DoMotion family verbatim + the ONE DoInterpretedMotion + per-op zero-tick flush (closes J3, J4, J9, J14) 2026-07-03 08:57:33 +02:00
MotionInterpreterFunnelTests.cs feat(physics): R5-V4 behavioral slice — head stance dispatch (all mt) + #164 autonomy bit + mt-0 wire flags 2026-07-05 10:18:26 +02:00
MotionInterpreterGroundLifecycleTests.cs feat(R3-W4): ground transitions + lifecycle verbatim; K-fix18 DELETED (closes J8, J10, J11-shape, J12, J13, J18, J19) 2026-07-02 23:01:31 +02:00
MotionInterpreterJumpFamilyTests.cs feat(physics): P5 commit 1 - port ConstraintManager leash distance constants (#167) 2026-07-30 11:54:35 +02:00
MotionInterpreterPendingMotionsTests.cs feat(R3-W2): pending_motions lifecycle + the MotionDone consumer — the R2 seam lands (closes J1, J17) 2026-07-02 22:24:56 +02:00
MotionInterpreterTests.cs fix(physics): movement-parity fixes - adjusted catch-up cap, autorun retail semantics, AP-30 retired 2026-07-30 15:04:17 +02:00
MotionNormalizationTests.cs feat(R3-W6): LOCAL PLAYER UNIFICATION — edge-driven retail input; UpdatePlayerAnimation + the synthesis layer DELETED (closes J15) 2026-07-03 09:19:56 +02:00
MotionSequenceGateTests.cs feat(runtime): own initial create residence transaction 2026-08-01 19:35:08 +02:00
MotionVelocityPipelineTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
MovementSystemTests.cs fix #266: retail run-rate 800 branch is exact-equality sentinel, not a cap 2026-07-30 19:22:41 +02:00
NeighborhoodTerrainResidencyTests.cs fix(streaming): derive the portal reveal window from the live streaming radii (#280) 2026-08-05 23:54:59 +02:00
ObjectRangeMathTests.cs fix(items): use retail cylinder range for loot windows 2026-07-17 20:32:34 +02:00
ObstructionEtherealTests.cs fix(physics): port retail Layer-2 ethereal override -- open doors passable (pc:276961) 2026-06-24 21:03:08 +02:00
PhysicsBodyCellSyncTests.cs fix(portal): synchronize destination presentation state 2026-07-16 21:17:13 +02:00
PhysicsBodyTests.cs fix(physics): #265/#166 - stop zeroing grounded residual velocity, wire GroundNormal 2026-07-30 19:28:28 +02:00
PhysicsDataCacheProductionTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
PhysicsDiagnosticsTests.cs feat(core): Phase W Stage 0 — [cell-swept] diagnostic (swept vs static cell, no behavior change) 2026-06-02 14:08:00 +02:00
PhysicsEngineAdjustPositionTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
PhysicsEngineResidencyTests.cs refactor(streaming): extract landblock physics publisher 2026-07-21 21:13:22 +02:00
PhysicsEngineTests.cs refactor(physics): delete legacy PhysicsEngine.Resolve/ResolvePlacement/HasCellSurface (C5a, AP-1/AD-1) 2026-08-05 14:11:31 +02:00
PhysicsSetPositionTests.cs feat(runtime): seal dormant SetPosition evaluations 2026-08-01 11:31:58 +02:00
PhysicsStateFlagsTests.cs feat(net): port retail physics spawn and event timestamps 2026-07-14 00:22:17 +02:00
PlayerWeenieTests.cs fix(physics): TS-23 - plumb real PK/PKLite/Impenetrable mover flags 2026-07-30 09:52:55 +02:00
PortalInfoTests.cs feat(physics): Phase 2 — wire CellBSP + Portals into CellPhysics 2026-05-19 16:52:20 +02:00
PortalPlaneTests.cs feat(core): Phase B.3 — PortalPlane (plane math + crossing detection) 2026-04-12 18:17:48 +02:00
PositionFrameValidationTests.cs feat(net): port retail physics spawn and event timestamps 2026-07-14 00:22:17 +02:00
ProjectilePhysicsStepperTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RemoteDeOverlapMechanismTests.cs fix(physics): #265 landing-bounce family - retail check_contact seed + velocity-free landing commit 2026-07-30 20:12:06 +02:00
RemoteMotionCombinerTests.cs refactor(physics): delete the redundant pre-sweep slope projection (AD-10 retired) 2026-08-06 09:35:22 +02:00
RemoteWeenieRunRateTests.cs fix(R4-V5): #160 remote run movetos in slow motion - remote interps had no weenie, so retail's run-rate chain never reached my_run_rate 2026-07-03 16:18:40 +02:00
RemoveCellsForLandblockTests.cs fix(physics): D8 — RemoveCellsForLandblock; cell transforms rebase per apply 2026-06-24 19:34:16 +02:00
ResolveCellIdTests.cs feat(physics): Phase 2 — BuildingPhysics + CheckBuildingTransit 2026-05-19 17:34:38 +02:00
ResolveResultOkTests.cs feat(A): wire SweepEye to the verbatim update_viewer (start-cell + fallbacks) 2026-06-05 11:10:32 +02:00
RestrictionObjPrevalenceInspectionTests.cs test(physics): P4 review - RestrictionObj prevalence inspection over the installed cell DAT 2026-07-30 11:01:10 +02:00
RetailEdgeResponseOrderingTests.cs fix(physics): restore retail path-6 collision response 2026-07-31 13:44:55 +02:00
RetailObjectActivityGateTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RetailObjectManagerTailTests.cs fix(motion): restore retail object manager order 2026-07-19 21:40:14 +02:00
RetailObjectQuantumClockTests.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RetailObserverTraceConformanceTests.cs feat(physics): R5-V4 behavioral slice — head stance dispatch (all mt) + #164 autonomy bit + mt-0 wire flags 2026-07-05 10:18:26 +02:00
RetailPhysicsStateTransitionTests.cs feat(vfx): port retail hidden and teleport presentation 2026-07-14 14:59:48 +02:00
RetailStepDownPlacementTests.cs fix(physics): preserve retail step-down probe state 2026-07-31 13:24:25 +02:00
ServerControlledLocomotionTests.cs fix(combat): persist death and retarget on kill 2026-07-12 09:19:38 +02:00
ShadowObjectRegistryMultiPartTests.cs fix(physics): AP-156 — flood the BSP sphere where the geometry is, not at the part origin 2026-08-06 15:52:04 +02:00
ShadowObjectRegistryTests.cs fix(physics): #297 — keep the PWD bitfield live so PK status reaches the client 2026-08-03 20:59:01 +02:00
ShadowRegistrationOverflowTests.cs fix(physics): AP-156 — flood the BSP sphere where the geometry is, not at the part origin 2026-08-06 15:52:04 +02:00
ShadowSetPositionCommitTests.cs fix(runtime): preserve hidden setposition collision ownership 2026-08-01 18:22:45 +02:00
ShadowShapeBuilderShapeSourceTests.cs fix(physics): AP-152 — dispatch collision shapes BSP-first, at emission and at the cell flood 2026-08-06 14:51:36 +02:00
ShadowShapeBuilderTests.cs fix(physics): AP-152 — dispatch collision shapes BSP-first, at emission and at the cell flood 2026-08-06 14:51:36 +02:00
SpawnPlacementSettlerTests.cs fix(physics): adopt the settle's resolved cell across an indoor seam (#276 remainder) 2026-08-06 06:37:46 +02:00
SphereCollisionFamilyTests.cs fix #182: port CSphere collision family — retail-faithful crowd wiggle (retires TS-45) 2026-07-07 11:25:56 +02:00
SphereIntersectsCellBspTests.cs fix(physics): #90 — sphere-overlap cell stickiness at doorway threshold 2026-05-20 20:30:36 +02:00
SphereIntersectsSphereConformanceTests.cs feat(physics): Task 2 — true sphere collision primitive (CSphere::intersects_sphere) 2026-06-24 19:08:53 +02:00
TeleportFarTownRunawayTests.cs fix(teleport D): cell-march preserves seed landblock id when no resident LB (no more lbX=0 outbound) 2026-06-22 13:38:48 +02:00
TerrainSurfaceTests.cs perf(physics): reuse reset-complete transition scratch 2026-07-25 14:37:02 +02:00
TransitionAllocationBaselineTests.cs perf(physics): reuse reset-complete transition scratch 2026-07-25 14:37:02 +02:00
TransitionCheckOtherCellsTests.cs chore(phys): A6.P3 #98 triage — revert neg-poly + bldg-check experiments 2026-05-23 15:11:49 +02:00
TransitionInsertIntoCellRetryTests.cs fix(physics): hold retail cell across inner retries 2026-07-31 12:40:50 +02:00
TransitionScratchDifferentialTests.cs refactor(physics): delete legacy PhysicsEngine.Resolve/ResolvePlacement/HasCellSurface (C5a, AP-1/AD-1) 2026-08-05 14:11:31 +02:00
TransitionScratchResetTests.cs perf(physics): reuse reset-complete transition scratch 2026-07-25 14:37:02 +02:00
TransitionTests.cs feat(physics): port retail projectile integration 2026-07-14 11:43:11 +02:00
TransitionTypesTests.cs refactor(physics): remove parsed collision graphs 2026-07-25 18:21:19 +02:00
Ts4Path6ConformanceTests.cs fix(physics): restore retail path-6 collision response 2026-07-31 13:44:55 +02:00
Ts4ProductionQuantumConformanceTests.cs fix(physics): validate retail cell containment roots 2026-07-31 14:48:26 +02:00
Ts4SteepRoofWedgeCaptureTests.cs test(physics): harden TS-4 production chronology 2026-07-31 14:08:51 +02:00
Ts46SphereListConformanceTests.cs fix(physics): TS-46 - seed the sweep from the Setup's own sphere list 2026-07-30 09:05:44 +02:00
WalkMissDiagnosticTests.cs feat(physics): WalkMissDiagnostic aggregator for ISSUES #83 probe spike 2026-05-20 10:31:39 +02:00
WeenieErrorCodeTableTests.cs feat(R4-V1): command-selection family + state widening (closes M2-mechanics, M11, M12, M15) 2026-07-03 11:13:15 +02:00