RigidBody and collision blockers
RigidBodyComponent (0xC177D702) attaches a shape through an owned RigidBody. The shape reference starts at component-body offset 748 in the checked profile and resolves to triangle, primitive or compound shapes. Registry names identify drive and character-interaction flags separately from filtering. Observed
Little-endian. Offsets are relative to this structure.
| Offset | Size | Type | Field | Confidence | Notes |
|---|---|---|---|---|---|
| 0x0 | 1 | u8 | ManagedObject byte | Unknown | 0 491,331, 1 641 |
| 0x1 | 1 | u8 | Active | Observed | Component.Active (registry bool): 0 330,635, 1 161,337 |
| 0x2 | 1 | u8 | IsAnOptimizedComponent | Observed | Component.IsAnOptimizedComponent: 0 481,177, 1 10,795 |
| 0x3 | 1 | u8 | IsPartiallyOptimized | Observed | Component.IsPartiallyOptimized: 0 491,716, 1 256 |
| 0x4 | 4 | u32 | Damage | Observed | PhysicComponent.Damage (enum): Medium 491,970, Light 2. Enumerators: 0 Damage_Light, 1 Damage_Medium, 2 Damage_Heavy, 3 Damage_Super_Heavy, 0xFFFFFFFF Damage_None |
| 0x8 | 4 | u32 | CharacterInteractionMode | Observed | PhysicComponent.CharacterInteractionMode (enum): Blocking 491,958, Ignore 12, Debris 2. Enumerators: 0 Blocking, 1 Debris, 2 PushableAlways, 3 PushableIfMoving, 4 BlockingMobile, 5 PushableIfShoving, 6 Ignore (prefix CharacterInteraction_) |
| 0xC | 1 | u8 | DriveEntity | Observed | PhysicComponent.DriveEntity (bool): 1 491,920, 0 52 |
| 0xD | 1 | u8 | EntityDriven | Observed | PhysicComponent.EntityDriven (bool): 0 491,956, 1 16 |
| 0xE | 4 | u32 | Resistance | Observed | InteractivePhysicComponent.Resistance (enum): Normal 491,968, Fragile 2, Indestructible 2. Enumerators: 0xFFFFFFFF FirstHit, 0 Fragile, 1 Normal, 2 Solid, 1000 Indestructible (prefix Resistance_) |
| 0x12 | 8 | u64 | GPSurfaceNavType: object id | Observed | RigidBodyComponent.GPSurfaceNavType, an embedded object of a class with no fields (u64 id, u32 class id) |
| 0x1A | 4 | u32 = 0x1C4B22AA | GPSurfaceNavType: class id | Observed | = 0x1C4B22AA, the class GameplaySurfaceNavType |
| 0x1E | 8 | u64 | RigidBody: object id | Observed | RigidBodyComponent.RigidBody, an owned object (kind 0x13: u64 id, u32 class id, body); the id is non-zero |
| 0x26 | 4 | u32 = 0x228F402A | RigidBody: class id | Observed | = 0x228F402A, the class RigidBody |
| 0x2A | 8 | u64 | CollisionFilterInfo: object id | Observed | RigidBody.13963E14, an embedded CollisionFilterInfo (the same class as CollisionMaterial's, whose slots are named in that box); 0 |
| 0x32 | 4 | u32 = 0x43EF99C2 | CollisionFilterInfo: class id | Observed | = 0x43EF99C2 |
| 0x36 | 1 | u8 | 642F141F | Unknown | CollisionFilterInfo bool (name not found): 1 491,936, 0 36 |
| 0x37 | 1 | u8 | 4A4D57A9 | Unknown | CollisionFilterInfo bool (name not found): 1 491,936, 0 36 |
| 0x38 | 8 | u64 | QueryFlags: object id | Observed | 0 |
| 0x40 | 4 | u32 = 0xA2FFD626 | QueryFlags: class id | Observed | = 0xA2FFD626, the class QueryLayerBits |
| 0x44 | 272 | u64·34 | QueryFlags slots | Observed | 34 u64 slots of QueryLayerBits; named slots include Static, Dynamic, CameraCollision and Raycast. |
| 0x154 | 8 | u64 | DAE8214F: object id | Unknown | 0 |
| 0x15C | 4 | u32 = 0xF5EBC0BE | DAE8214F: class id | Unknown | = 0xF5EBC0BE, the class CollisionLayerBits |
| 0x160 | 192 | u64·24 | DAE8214F slots | Unknown | Stored field; complete meaning is not established. |
| 0x220 | 8 | u64 | 883E5FCA: object id | Unknown | 0 |
| 0x228 | 4 | u32 = 0xF5EBC0BE | 883E5FCA: class id | Unknown | = 0xF5EBC0BE |
| 0x22C | 192 | u64·24 | 883E5FCA slots | Unknown | the 24 bit slots of the second CollisionLayerBits. Set: Static 49,170; 89CA5860 49,170; Dynamic 2; Debris 1,168; DetectionZone 13; D0D6077F 11; 8025B1D3 11; WaterLevel 11; 901DDA28 2; TerrainLod0 4; 1F1A0AB5 797 |
| 0x2EC | 10 | ref | Shape | Observed | RigidBody.Shape (registry; a reference to an ObjectShape): MeshShape, SphereShape, ReferenceListShape, CapsuleShape or BoxShape. Tag 1 or 3 (null): 1 491,947, 3 25 |
| 0x2F6 | 4 | f32 | Mass | Observed | RigidBody.Mass: 10.0 491,970, 0.2 2 |
| 0x2FA | 4 | f32 | LinearDamping | Observed | RigidBody.LinearDamping: 0.1 491,968, 0.8 2, 0.99 2 |
| 0x2FE | 4 | f32 | AngularDamping | Observed | RigidBody.AngularDamping: 0.1 491,968, 0.9 4 |
| 0x302 | 4 | f32 | GravityFactor | Observed | RigidBody.GravityFactor: 1.0 491,972 |
| 0x306 | 4 | u32 | DrivingMode | Observed | RigidBody.DrivingMode (enum RigidBody::DrivingMode): Fixed 491,948, 256 20, 513 2. Enumerators: 0 Fixed, 1 KeyFramed, 2 Dynamic |
| 0x30A | 1 | u8 | 1AD9BC48 | Unknown | RigidBody bool (name not found; the RigidBody's bit-field group is stored last): 0 491,972 |
| 0x30B | 10 | ref | ImpactData | Observed | RigidBodyComponent.ImpactData (a reference): tag 3 491,968, 1 4 (3 = null) |
| 0x315 | 4 | u32 | B99D101E | Unknown | RigidBodyComponent u32 (name not found): 0 491,968, 1 4 |
| 0x319 | 1 | u8 | UseGravityWhenKeyFramed | Observed | RigidBodyComponent bool 1 of the 5 stored bools (registry order, after the other fields): 0 491,972 |
| 0x31A | 1 | u8 | FEB136EB | Unknown | bool 2 (name not found): 0 491,972 |
| 0x31B | 1 | u8 | AutoUpdatePhysicHierarchy | Observed | bool 3: 1 491,970, 0 2 |
| 0x31C | 1 | u8 | UpdateEntityBV | Observed | bool 4: 0 491,964, 1 8 |
| 0x31D | 1 | u8 | IsGround | Observed | bool 5: 0 458,012, 1 33,960 |
| 0x31E | 8 | u64 | Sleeping: object id | Observed | RigidBodyComponent.Sleeping, an embedded RigidBodySleeping; the id is non-zero |
| 0x326 | 4 | u32 = 0x87BD5866 | Sleeping: class id | Observed | = 0x87BD5866, the class RigidBodySleeping |
| 0x32A | 4 | f32 | 7A3F735D | Unknown | RigidBodySleeping f32 (name not found): 0.0 491,972 |
| 0x32E | 4 | f32 | D38E02CF | Unknown | RigidBodySleeping f32 (name not found): 0.0 491,972 |
| 0x332 | 4 | f32 | E2C7281D | Unknown | RigidBodySleeping f32 (name not found): 0.0 491,972 |
| 0x336 | 4 | u32 | 967B0AFB | Unknown | RigidBodySleeping enum CB6326B3 (enumerators hash-only: 0 = 3F0755E0, 1 = 0D3657D0, 2 = 2E60A5CB): 0 491,972 |
| 0x33A | 1 | u8 | GuidanceSystemPtr: tag | Observed | |
| 0x33B | h | u64 | GuidanceSystemPtr: id | Observed | present when the tag is 05 |
| 827+h | 4 | u32 | SoundOcclusionLinks count | Observed | RigidBodyComponent.SoundOcclusionLinks (an array of Entity links): its count, 0 491,972 |
| 831+h | 8 | u64 | PhysicsActivityZone: object id | Observed | RigidBodyComponent.PhysicsActivityZone, an owned object (kind 0x13); non-zero |
| 839+h | 4 | u32 = 0x18D528B6 | PhysicsActivityZone: class id | Observed | = 0x18D528B6, the class PhysicsActivityZone |
| 843+h | 4 | u32 | Zones count | Observed | PhysicsActivityZone.Zones (an array of ActivityZoneDesc): its count, 0 491,971, 2 1 |
Usual body length is 847 or 855 bytes depending on a null/present handle. The final PhysicsActivityZone has a counted ActivityZoneDesc array, so these sizes are not universal: the high-resolution NPC puppet (MAD_Entity_NPC_HighResPuppet) carries two 27-byte items and totals 901 bytes. Each item is a u64 id, type 0x56F0AAEA (ActivityZoneDesc), a u32, two f32 and three bytes; every other body stores a zero count. Observed
Some MAD_COL_* Entities have only RigidBodyComponent and no Visual. A closed-gate owner references MAD_COL_GEN_MAM_Campus_ClosedGate_A; these are invisible collision blockers rather than missing render meshes. Checked Area 52 and The Deck listings contain 44 and 12 such owners respectively. Observed
Twenty-four measured bodies have values such as 256, 512 or 513 outside the ordinary named-mode profile. Their interpretation is unresolved. Unknown