CollisionMaterial and surfaces
CollisionMaterial (0x74F7311D) identifies a physical surface, separately from render Material. Its 778-byte profile contains a debug color, ContactType, reaction and fluid references and collision filters. Every one of the 263 resources in all six installed archives is exactly 778 bytes and is byte-accounted by this profile; no body is excluded. Proven
The field names are corroborated by the inspected runtime registry; enum spellings and runtime physics semantics have their own confidence below. Observed
Little-endian. Every one of the 263 CollisionMaterial bodies across all six installed forges is byte-accounted in the 778-byte profile; no bodies are excluded. Enum spelling evidence and runtime friction behavior are separate.
| Offset | Size | Type | Field | Confidence | Notes |
|---|---|---|---|---|---|
| 0x0 | 1 | u8 = 01 | ManagedObject byte | Unknown | Stored bytes; meaning is not established. |
| 0x1 | 1 | u8 | NoWeatherExposed | Proven | registry bool: 1 on 249 of 263, 0 on 14 |
| 0x2 | 8 | u64 | DebugColor: object id | Proven | |
| 0xA | 4 | u32 = 0xA79767ED | DebugColor: class id | Proven | = 0xA79767ED, the class Color |
| 0xE | 16 | vec4 | DebugColor: R G B A | Proven | registry DebugColor (Color.R, G, B, A; alpha 1.0 on all) |
| 0x1E | 4 | u32 | ContactType | Proven | ContactMaterial enum; confirmed and candidate names are distinguished in the surface table. |
| 0x22 | 10 | ref | surface material (AC9E437F) | Proven | registry AC9E437F, a CollisionReactionEntryBase reference: 253 bodies point to a 0xEDFC54A6 entry (Syn_Plastic_GEN, Grounds_Dirt_GEN, Wood_Hard_GEN ...), 10 are null |
| 0x2C | 10 | ref | fluid characteristics (C8DB4746) | Proven | registry C8DB4746, a MoldedFluidCharacteristics reference: 247 point to a 0xC13A9A56 entry, 16 are null |
| 0x36 | 1 | u8 | DEC061D8 | Unknown | registry bool (name not found), the first of the two bit fields: 1 on 21 of 263 |
| 0x37 | 1 | u8 | 5107A4E0 | Unknown | registry bool (name not found): 1 on 2 of 263 |
| 0x38 | 8 | u64 | CollisionFilterInfo: object id | Proven | 0 |
| 0x40 | 4 | u32 = 0x43EF99C2 | CollisionFilterInfo: class id | Proven | = 0x43EF99C2 |
| 0x44 | 1 | u8 | 642F141F | Unknown | CollisionFilterInfo bool (name not found): 1 on all 263 |
| 0x45 | 1 | u8 | 4A4D57A9 | Unknown | CollisionFilterInfo bool (name not found): 1 on 259 of 263 |
| 0x46 | 8 | u64 | QueryFlags: object id | Proven | 0 |
| 0x4E | 4 | u32 = 0xA2FFD626 | QueryFlags: class id | Proven | = 0xA2FFD626, the class QueryLayerBits (the field is named QueryFlags) |
| 0x52 | 8 | u64 | QueryFlags.Static | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 241 of 263 |
| 0x5A | 8 | u64 | QueryFlags.89CA5860 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 242 of 263 (name not found) |
| 0x62 | 8 | u64 | QueryFlags.Dynamic | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x6A | 8 | u64 | QueryFlags.CameraCollision | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 249 of 263 |
| 0x72 | 8 | u64 | QueryFlags.4ADD89EC | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x7A | 8 | u64 | QueryFlags.CameraOcclusion | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 247 of 263 |
| 0x82 | 8 | u64 | QueryFlags.18E32EB8 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 247 of 263 (name not found) |
| 0x8A | 8 | u64 | QueryFlags.742A8CFD | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x92 | 8 | u64 | QueryFlags.33242F07 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0x9A | 8 | u64 | QueryFlags.Character | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 1 of 263 |
| 0xA2 | 8 | u64 | QueryFlags.WaterLevel | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 |
| 0xAA | 8 | u64 | QueryFlags.Particle | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0xB2 | 8 | u64 | QueryFlags.409BC772 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 1 of 263 (name not found) |
| 0xBA | 8 | u64 | QueryFlags.5A43CF09 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0xC2 | 8 | u64 | QueryFlags.1B600894 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0xCA | 8 | u64 | QueryFlags.BFA8CC30 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 21 of 263 (name not found) |
| 0xD2 | 8 | u64 | QueryFlags.CD19DFD6 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 (name not found) |
| 0xDA | 8 | u64 | QueryFlags.27A1301D | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 (name not found) |
| 0xE2 | 8 | u64 | QueryFlags.A34FF649 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 (name not found) |
| 0xEA | 8 | u64 | QueryFlags.Raycast | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 263 of 263 |
| 0xF2 | 8 | u64 | QueryFlags.OcclusionHeightTest | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0xFA | 8 | u64 | QueryFlags.Targeting | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x102 | 8 | u64 | QueryFlags.92EF3F19 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 1 of 263 (name not found) |
| 0x10A | 8 | u64 | QueryFlags.D527A7C3 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x112 | 8 | u64 | QueryFlags.901DDA28 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 213 of 263 (name not found) |
| 0x11A | 8 | u64 | QueryFlags.TerrainLod0 | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 213 of 263 |
| 0x122 | 8 | u64 | QueryFlags.TerrainLod1 | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 213 of 263 |
| 0x12A | 8 | u64 | QueryFlags.TerrainLod2 | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 213 of 263 |
| 0x132 | 8 | u64 | QueryFlags.TerrainLod3 | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 213 of 263 |
| 0x13A | 8 | u64 | QueryFlags.TerrainLod4 | Proven | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 213 of 263 |
| 0x142 | 8 | u64 | QueryFlags.D45E6F42 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0x14A | 8 | u64 | QueryFlags.1F1A0AB5 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 (name not found) |
| 0x152 | 8 | u64 | QueryFlags.E2332913 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x15A | 8 | u64 | QueryFlags.50FF8AA5 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x162 | 8 | u64 | DAE8214F: object id | Unknown | 0 |
| 0x16A | 4 | u32 = 0xF5EBC0BE | DAE8214F: class id | Unknown | = 0xF5EBC0BE, the class CollisionLayerBits (the field DAE8214F) |
| 0x16E | 8 | u64 | DAE8214F.Static | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 241 of 263 |
| 0x176 | 8 | u64 | DAE8214F.89CA5860 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 243 of 263 (name not found) |
| 0x17E | 8 | u64 | DAE8214F.Dynamic | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x186 | 8 | u64 | DAE8214F.Debris | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 1 of 263 |
| 0x18E | 8 | u64 | DAE8214F.DetectionZone | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x196 | 8 | u64 | DAE8214F.MainCharacter | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 |
| 0x19E | 8 | u64 | DAE8214F.Character | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 |
| 0x1A6 | 8 | u64 | DAE8214F.CharacterNoInteractive | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x1AE | 8 | u64 | DAE8214F.909F75B2 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0x1B6 | 8 | u64 | DAE8214F.42C286DC | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0x1BE | 8 | u64 | DAE8214F.D0D6077F | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0x1C6 | 8 | u64 | DAE8214F.8025B1D3 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x1CE | 8 | u64 | DAE8214F.33242F07 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0x1D6 | 8 | u64 | DAE8214F.WaterLevel | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x1DE | 8 | u64 | DAE8214F.Targetable | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x1E6 | 8 | u64 | DAE8214F.901DDA28 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 212 of 263 (name not found) |
| 0x1EE | 8 | u64 | DAE8214F.TerrainLod0 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 212 of 263 |
| 0x1F6 | 8 | u64 | DAE8214F.TerrainLod1 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 212 of 263 |
| 0x1FE | 8 | u64 | DAE8214F.TerrainLod2 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 212 of 263 |
| 0x206 | 8 | u64 | DAE8214F.TerrainLod3 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 212 of 263 |
| 0x20E | 8 | u64 | DAE8214F.TerrainLod4 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 212 of 263 |
| 0x216 | 8 | u64 | DAE8214F.1F1A0AB5 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 (name not found) |
| 0x21E | 8 | u64 | DAE8214F.DF5300A3 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x226 | 8 | u64 | DAE8214F.50FF8AA5 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x22E | 8 | u64 | 883E5FCA: object id | Unknown | 0 |
| 0x236 | 4 | u32 = 0xF5EBC0BE | 883E5FCA: class id | Unknown | = 0xF5EBC0BE (the field 883E5FCA) |
| 0x23A | 8 | u64 | 883E5FCA.Static | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 |
| 0x242 | 8 | u64 | 883E5FCA.89CA5860 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 (name not found) |
| 0x24A | 8 | u64 | 883E5FCA.Dynamic | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 |
| 0x252 | 8 | u64 | 883E5FCA.Debris | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 7 of 263 |
| 0x25A | 8 | u64 | 883E5FCA.DetectionZone | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 7 of 263 |
| 0x262 | 8 | u64 | 883E5FCA.MainCharacter | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 1 of 263 |
| 0x26A | 8 | u64 | 883E5FCA.Character | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x272 | 8 | u64 | 883E5FCA.CharacterNoInteractive | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x27A | 8 | u64 | 883E5FCA.909F75B2 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 4 of 263 (name not found) |
| 0x282 | 8 | u64 | 883E5FCA.42C286DC | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x28A | 8 | u64 | 883E5FCA.D0D6077F | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 5 of 263 (name not found) |
| 0x292 | 8 | u64 | 883E5FCA.8025B1D3 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 4 of 263 (name not found) |
| 0x29A | 8 | u64 | 883E5FCA.33242F07 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x2A2 | 8 | u64 | 883E5FCA.WaterLevel | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 |
| 0x2AA | 8 | u64 | 883E5FCA.Targetable | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x2B2 | 8 | u64 | 883E5FCA.901DDA28 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 2 of 263 (name not found) |
| 0x2BA | 8 | u64 | 883E5FCA.TerrainLod0 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 3 of 263 |
| 0x2C2 | 8 | u64 | 883E5FCA.TerrainLod1 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x2CA | 8 | u64 | 883E5FCA.TerrainLod2 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x2D2 | 8 | u64 | 883E5FCA.TerrainLod3 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 |
| 0x2DA | 8 | u64 | 883E5FCA.TerrainLod4 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 21 of 263 |
| 0x2E2 | 8 | u64 | 883E5FCA.1F1A0AB5 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x2EA | 8 | u64 | 883E5FCA.DF5300A3 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x2F2 | 8 | u64 | 883E5FCA.50FF8AA5 | Unknown | bit field of the embedded object, stored as a u64 (kind 0x09): 1 on 0 of 263 (name not found) |
| 0x2FA | 4 | f32 | Friction | Proven | registry Friction: 10.0 (203), 2.5 (15), 5.0 (10), 0.0 (5) |
| 0x2FE | 4 | f32 | Restitution | Proven | registry Restitution: 0.05 (249), 0.1, 0.01, 0.001 |
| 0x302 | 8 | bytes | unaccounted | Unknown | 8 bytes: 0x5368D4A5 then a zero u32, on all 263. The class lists Stiffness and Damping after Restitution (their values in the live objects are 1e12 and 0, the class defaults); these 8 bytes are not them, and 0x5368D4A5 is a CRC-32 with no known name |
| ContactType | Runtime enumerator | Confidence |
|---|---|---|
| 0 | Dirt | Observed |
| 1 | Mud | Observed |
| 2 | Grass | Observed |
| 3 | Forest (CRC candidate) | Inferred |
| 4 | Stone | Observed |
| 5 | Asphalt | Observed |
| 6 | Metal_Hard | Observed |
| 7 | Metal_Thin | Observed |
| 25 | Snow_Deep | Observed |
| 27 | Ice | Observed |
| 31 | Snow_Groomed (CRC candidate) | Inferred |
| 54 | Stairs | Observed |
The numeric values and name hashes come from the inspected ContactMaterial enum table. Forest and Snow_Groomed are candidate spellings recovered by CRC matching; the other listed names are resolved from identifier strings. This is not a friction model. QueryLayerBits stores 34 u64 slots and CollisionLayerBits 24 u64 slots in this profile. Static rocks also set Dynamic, so that filter name does not imply moving geometry. Observed
Stored values are readable but lack semantic names. Reaction and fluid references alone do not establish runtime response. Unknown
Shaun White Skateboarding
Section titled “Shaun White Skateboarding”only in SWS
A collision triangle’s surface is one of the objects of class SWCollisionMaterial (0xEF0C7E58, 188 bytes each) named by a MeshShape’s Materials list. The names include Concrete, ConcreteVert, ConcreteNonRidable, ConcreteStairs, Metal, Wood, WoodDeck, Asphalt, Glass, Grass, Dirt, Water and InvisibleWall; the bail and robot-bail surfaces are separate from the non-ridable ones. Observed · SWS[level 01]
The class id equals the CRC-32 of SWCollisionMaterial. Proven · computed from the name
Surface id 0 is a default whose meaning is unknown. The parameters of a surface, including grind flags, are not read from its object; only its name is. The NonRidable, Unsafe and InvisibleWall names do not imply water or a death zone. A death-zone scene (01A_DeathZoneSafety) has no visual mesh and its scripted behaviour is not decoded. Observed