acdream/src/AcDream.Core/Physics
Erik 8ccaf72ae7 feat(core): adopt the retail members the equipment and physics enums were missing
With the two wrong enums corrected, the remaining wire-adjacent families diff
cleanly against the retail header - same values everywhere they overlap, just
fewer members on our side. This adopts the gaps.

EquipMask gains retail's eleven INVENTORY_LOC composite slot groups (acclient.h:
3193). The 32 primitive slots were already exact and stay pinned by EquipMaskTests;
what was missing were the groups the wire and the UI actually reason in - Armor,
Jewelry, ReadySlot, Weapon, WeaponReadySlot, the wrist/finger/sigil pairs, and
All. These are transcribed as literals, not derived, for the reason the previous
commit documents at length.

That transcription immediately earned itself. A type remark on EquipMask claimed
retail's CLOTHING_LOC composite "also sets bit 31, 0x80000000, which is not a
named INVENTORY_LOC primitive". It does not. CLOTHING_LOC is 0x080001FF: the nine
wear slots plus bit 27, which is the perfectly well-named Cloak slot. No
INVENTORY_LOC member touches bit 31 at all - ALL_LOC stops at bit 30. The remark
is corrected and a test now asserts the actual decomposition.

TransientStateFlags gains WaterContact (0x8) and CheckEthereal (0x100), the two
retail bits acdream's transition never declared. Neither is produced or consumed
yet; they are named so those slots cannot be quietly reused for an acdream-local
flag and then collide.

PhysicsStateFlags gains ReservedUnused1 (0x2) and ReservedUnused2 (0x2000), which
retail declares as UNUSED1_PS/UNNUSED2_PS. Same reasoning: reserved is a fact
worth recording.

AttackHeight gains Undef = 0. The three real heights are 1-based and were already
right; retail reserves 0 and the wire sends it, so it is now named instead of
arriving as an undefined cast. The numeric values are unchanged, so this renames
nothing at runtime.

Also checked and found already correct, so left alone: ObjectInfoState (matches
ObjectInfoEnum exactly, None being DEFAULT_OI), AttackType (every primitive plus
both composites - Unarmed 0x19 and MultiStrike 0x79E0 - land on retail's
literals), RadarBlipShape, RadarBehavior, MovementType, HoldKey, ParticleType, and
PhysicsDescriptionFlag. AttackType is worth calling out because the campaign's
extraction tooling reported it as a conflict; the tool reads one line per member
and had truncated a multi-line composite. The enum was fine.

RetailEnumConformanceTests grows tables for each of the above, each citing its
acclient.h line.

Core tests 3,785 -> 3,836. Full suite 9,701 passed / 5 skipped, no failures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 01:27:57 +02:00
..
Motion refactor(world): canonicalize live physics host ownership 2026-07-21 14:05:34 +02:00
AceModernCommandCatalog.cs feat(L.1b): dual MotionCommand catalog — AceModern runtime + Retail2013 conformance 2026-06-30 22:13:36 +02:00
AnimationCommandRouter.cs fix(anim): Phase L.1b route motion commands 2026-04-28 10:46:22 +02:00
AnimationHookRouter.cs feat(anim): Phase E.1 hook router + GameWindow wiring 2026-04-18 16:30:23 +02:00
AnimationSequencer.cs fix(animation): harden presentation phase handoffs 2026-07-21 10:01:25 +02:00
BSPQuery.cs feat(physics): add differential flat BSP traversal 2026-07-25 15:47:58 +02:00
BuildingPhysics.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
CellArray.cs feat(physics): Stage 1 — CellArray ordered/deduped cell collection (retail CELLARRAY) 2026-06-03 08:54:45 +02:00
CellDump.cs feat(phys): A6.P3 #98 Step 2 — cell-dump probe + roundtrip test 2026-05-23 15:16:56 +02:00
CellSurface.cs refactor(physics): remove parsed collision graphs 2026-07-25 18:21:19 +02:00
CellTransit.cs fix(physics): traverse prepared indoor portal topology 2026-07-27 00:02:44 +02:00
CollisionExemption.cs fix(physics): #137 Task 3 — port obstruction_ethereal verbatim; retire AD-7 shim 2026-06-24 19:20:02 +02:00
CollisionPrimitives.cs feat(physics): Task 2 — true sphere collision primitive (CSphere::intersects_sphere) 2026-06-24 19:08:53 +02:00
CollisionShadowVerifier.cs perf(physics): cut production traversal to flat assets 2026-07-25 17:00:04 +02:00
CollisionTraversal.cs refactor(physics): remove parsed collision graphs 2026-07-25 18:21:19 +02:00
EntityCollisionFlags.cs feat(physics): port retail projectile integration 2026-07-14 11:43:11 +02:00
FlatBspQuery.cs feat(physics): add differential flat BSP traversal 2026-07-25 15:47:58 +02:00
FlatCollisionAssetBuilder.cs feat(content): bake and read flat collision assets 2026-07-25 15:22:08 +02:00
FlatCollisionAssets.cs perf(physics): cut production traversal to flat assets 2026-07-25 17:00:04 +02:00
GfxObjDump.cs feat(phys): A6.P3 #98 — GfxObj dump infrastructure (ACDREAM_DUMP_GFXOBJS) 2026-05-23 20:24:26 +02:00
IAnimationHookSink.cs feat(#188): fading-wall + sliding-door translucency; hold open past animation settle 2026-07-09 09:17:50 +02:00
IMotionCommandCatalog.cs feat(L.1b): dual MotionCommand catalog — AceModern runtime + Retail2013 conformance 2026-06-30 22:13:36 +02:00
InterpolationManager.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
InterpretedMotionFunnel.cs fix(R4-V5): moveto wedge - StopCompletely's missing animation dispatch orphaned pending_motions; + the P1 autonomous store family 2026-07-03 14:15:36 +02:00
LandDefs.cs feat(physics #145): Slice 1 — Position/Frame types + LandDefs.GetBlockOffset (0x0043e630) 2026-06-21 10:30:20 +02:00
MotionCommandResolver.cs feat(L.1b): dual MotionCommand catalog — AceModern runtime + Retail2013 conformance 2026-06-30 22:13:36 +02:00
MotionInterpreter.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
ObjectRangeMath.cs fix(items): use retail cylinder range for loot windows 2026-07-17 20:32:34 +02:00
PhysicsBody.cs feat(core): adopt the retail members the equipment and physics enums were missing 2026-07-29 01:27:57 +02:00
PhysicsDataCache.cs refactor(physics): remove parsed collision graphs 2026-07-25 18:21:19 +02:00
PhysicsDiagnostics.cs feat(streaming): shadow-publish flat collision assets 2026-07-25 16:38:54 +02:00
PhysicsEngine.cs fix(headless): complete connected movement gate 2026-07-27 10:26:44 +02:00
PhysicsObjUpdate.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
PhysicsResolveCapture.cs test: fix PhysicsResolveCapture/PhysicsDiagnostics static-leak isolation 2026-06-02 15:20:24 +02:00
PhysicsTimestampGate.cs feat(net): port retail physics spawn and event timestamps 2026-07-14 00:22:17 +02:00
PlayerWeenie.cs feat(R3-W3): verbatim jump family — charge gates, jump_is_allowed chain, epsilon fixes; StandingLongJump misattribution retired (closes J5, J6, J7-interp-side, J16-epsilons) 2026-07-02 22:37:07 +02:00
PortalInfo.cs feat(physics): Phase 2 — wire CellBSP + Portals into CellPhysics 2026-05-19 16:52:20 +02:00
PortalPlane.cs fix(core): Phase B.3 — add centroid + radius bounds to PortalPlane crossing test 2026-04-12 19:08:46 +02:00
Position.cs refactor(physics #145): Slice 1 — rename Frame->CellFrame to avoid DatReaderWriter.Types.Frame collision 2026-06-21 10:34:36 +02:00
PositionFrameValidation.cs feat(net): port retail physics spawn and event timestamps 2026-07-14 00:22:17 +02:00
ProjectilePhysicsStepper.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RawMotionState.cs feat(R3-W1): retail state completion — action FIFOs, MovementParameters, MotionNode, WeenieError renumber (closes J2, J16-codes) 2026-07-02 22:12:33 +02:00
RemoteMotionCombiner.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RemoteWeenie.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
ResolveResult.cs refactor(runtime): own local movement and outbound cadence 2026-07-26 12:33:53 +02:00
Retail2013CommandCatalog.cs feat(L.1b): dual MotionCommand catalog — AceModern runtime + Retail2013 conformance 2026-06-30 22:13:36 +02:00
RetailFrameMath.cs feat(physics): port retail projectile integration 2026-07-14 11:43:11 +02:00
RetailObjectActivityGate.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RetailObjectManagerTail.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RetailObjectQuantumClock.cs feat(physics): port retail complete object frame pipeline 2026-07-20 09:10:31 +02:00
RetailPhysicsStateTransition.cs feat(vfx): port retail hidden and teleport presentation 2026-07-14 14:59:48 +02:00
ServerControlledLocomotion.cs fix(combat): persist death and retarget on kill 2026-07-12 09:19:38 +02:00
ShadowEntrySnapshot.cs perf(physics): pool collision cell snapshots 2026-07-23 06:12:34 +02:00
ShadowObjectRegistry.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
ShadowShape.cs feat(phys): add ShadowShape record (no callers yet) 2026-05-24 15:07:40 +02:00
ShadowShapeBuilder.cs perf(physics): cut production traversal to flat assets 2026-07-25 17:00:04 +02:00
TerrainSurface.cs feat(headless): hydrate isolated collision worlds 2026-07-27 09:25:58 +02:00
TransitionScratchArena.cs perf(physics): reuse reset-complete transition scratch 2026-07-25 14:37:02 +02:00
TransitionTypes.cs refactor(physics): remove parsed collision graphs 2026-07-25 18:21:19 +02:00
WalkMissDiagnostic.cs feat(physics): WalkMissDiagnostic aggregator for ISSUES #83 probe spike 2026-05-20 10:31:39 +02:00