diff --git a/src/AcDream.Core/Physics/ShadowObjectRegistry.cs b/src/AcDream.Core/Physics/ShadowObjectRegistry.cs
index 8a4518a..e0425d8 100644
--- a/src/AcDream.Core/Physics/ShadowObjectRegistry.cs
+++ b/src/AcDream.Core/Physics/ShadowObjectRegistry.cs
@@ -431,4 +431,11 @@ public readonly record struct ShadowEntry(
/// from PWD._bitfield at CreateObject time via
/// .
///
- EntityCollisionFlags Flags = EntityCollisionFlags.None);
+ EntityCollisionFlags Flags = EntityCollisionFlags.None,
+ // A6.P4 door fix (2026-05-24): local-to-entity transform for multi-part
+ // entities. ShadowObjectRegistry.UpdatePosition uses these to rebuild
+ // Position/Rotation when the entity moves. Single-shape callers leave
+ // these at default (zero offset, identity rotation) — equivalent to
+ // the shape sitting at the entity's origin.
+ Vector3 LocalPosition = default,
+ Quaternion LocalRotation = default);