Prop Physics: Difference between revisions
Content added Content deleted
(Added 64-bit Aggregate documentation.) |
(Added infobox and normalized some content.) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{ParadiseResourceTypeInfobox |
|||
| name = PropPhysics |
|||
| resourcenames = PRP_PHYSICS_ |
|||
| id = 0x1000F |
|||
| category = Game-specific<br />(Burnout Paradise) |
|||
| memdist = Main Memory only |
|||
}} |
|||
The prop physics resource type handles collision attributes for props on a per-track unit basis. |
The prop physics resource type handles collision attributes for props on a per-track unit basis. |
||
= Types = |
|||
{{subpage|Prop Types|text=List of prop types used in Burnout Paradise.}} |
|||
= Structures = |
= Structures = |
||
Line 82: | Line 93: | ||
| 0x5E || 0x1 || uint8_t || muNumberOfVolumes || || |
| 0x5E || 0x1 || uint8_t || muNumberOfVolumes || || |
||
|- |
|- |
||
| 0x5F || 0x1 || uint8_t || mu8JointType || || |
| 0x5F || 0x1 || uint8_t || mu8JointType || || [[#Prop joint type|Joint type]] |
||
|- |
|- |
||
| 0x60 || 0x1 || uint8_t || mu8ExtraTypeInfo || || |
| 0x60 || 0x1 || uint8_t || mu8ExtraTypeInfo || || [[#Prop extra type info|Extra type info]] |
||
|- |
|- |
||
| 0x61 || 0xF || || || |
| 0x61 || 0xF || || || Padding || |
||
|} |
|} |
||
Line 103: | Line 114: | ||
| 0x38 || 0x4 || float32_t || mfMass || || |
| 0x38 || 0x4 || float32_t || mfMass || || |
||
|- |
|- |
||
| 0x3C || 0x4 || || || |
| 0x3C || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x40 || 0x8 || [[#rw::collision::VolRef::Volume|Volume]]* || maCollisionVolumes || || |
| 0x40 || 0x8 || [[#rw::collision::VolRef::Volume|Volume]]* || maCollisionVolumes || || |
||
Line 127: | Line 138: | ||
| 0x6A || 0x1 || uint8_t || muNumberOfVolumes || || |
| 0x6A || 0x1 || uint8_t || muNumberOfVolumes || || |
||
|- |
|- |
||
| 0x6B || 0x1 || uint8_t || mu8JointType || || |
| 0x6B || 0x1 || uint8_t || mu8JointType || || [[#Prop joint type|Joint type]] |
||
|- |
|- |
||
| 0x6C || 0x1 || uint8_t || mu8ExtraTypeInfo || || |
| 0x6C || 0x1 || uint8_t || mu8ExtraTypeInfo || || [[#Prop extra type info|Extra type info]] |
||
|- |
|- |
||
| 0x6D || 0x3 || || || |
| 0x6D || 0x3 || || || Padding || |
||
|} |
|} |
||
Line 151: | Line 162: | ||
| 0x2C || 0x1 || uint8_t || muNumberOfVolumes || || |
| 0x2C || 0x1 || uint8_t || muNumberOfVolumes || || |
||
|- |
|- |
||
| 0x2D || 0x3 || || || |
| 0x2D || 0x3 || || || Padding || |
||
|} |
|} |
||
Line 164: | Line 175: | ||
| 0x20 || 0x4 || float32_t || mfMass || || |
| 0x20 || 0x4 || float32_t || mfMass || || |
||
|- |
|- |
||
| 0x24 || 0x4 || || || |
| 0x24 || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x28 || 0x8 || [[#rw::collision::VolRef::Volume|Volume]]* || maCollisionVolumes || || |
| 0x28 || 0x8 || [[#rw::collision::VolRef::Volume|Volume]]* || maCollisionVolumes || || |
||
Line 172: | Line 183: | ||
| 0x34 || 0x1 || uint8_t || muNumberOfVolumes || || |
| 0x34 || 0x1 || uint8_t || muNumberOfVolumes || || |
||
|- |
|- |
||
| 0x35 || 0x3 || || || |
| 0x35 || 0x3 || || || Padding || |
||
|} |
|} |
||
Line 192: | Line 203: | ||
| 0x58 || 0x4 || uint32_t || surfaceID || || |
| 0x58 || 0x4 || uint32_t || surfaceID || || |
||
|- |
|- |
||
| 0x5C || 0x4 || uint32_t || m_flags || || |
| 0x5C || 0x4 || uint32_t || m_flags || || See [[#Volume flags|volume flags]] |
||
|} |
|} |
||
Line 205: | Line 216: | ||
| 0x48 || 0xC || [[#Anonymous union in Volume|Anonymous union]] || || Volume data || |
| 0x48 || 0xC || [[#Anonymous union in Volume|Anonymous union]] || || Volume data || |
||
|- |
|- |
||
| 0x54 || 0x4 || || || |
| 0x54 || 0x4 || || || Padding || |
||
|- |
|- |
||
| 0x58 || 0x4 || float32_t || radius || || |
| 0x58 || 0x4 || float32_t || radius || || |
||
Line 213: | Line 224: | ||
| 0x60 || 0x4 || uint32_t || surfaceID || || |
| 0x60 || 0x4 || uint32_t || surfaceID || || |
||
|- |
|- |
||
| 0x64 || 0x4 || uint32_t || m_flags || || |
| 0x64 || 0x4 || uint32_t || m_flags || || See [[#Volume flags|volume flags]] |
||
|} |
|} |
||
Line 232: | Line 243: | ||
=== rw::collision::Aggregate === |
=== rw::collision::Aggregate === |
||
==== 32-bit ==== |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
Line 244: | Line 256: | ||
|- |
|- |
||
| 0x2C || 0x4 || uint32_t || pad || || |
| 0x2C || 0x4 || uint32_t || pad || || |
||
|} |
|||
==== 64-bit ==== |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x20 || [[#rw::collision::AALineClipper::Init::AABBox|AABBox]] || m_AABB || || |
|||
|- |
|||
| 0x20 || 0x8 || VTable* || m_vTable || List of Aggregate functions || rw::collision::Aggregate::VTable |
|||
|- |
|||
| 0x28 || 0x4 || uint32_t || m_numTagBits || || |
|||
|- |
|||
| 0x2C || 0x4 || uint32_t || m_numVolumes || || |
|||
|- |
|||
| 0x30 || 0x4 || uint32_t || pad || || |
|||
|- |
|||
| 0x34 || 0x4 || || || Padding || |
|||
|} |
|} |
||
Line 256: | Line 285: | ||
=== rw::collision::SphereSpecificData === |
=== rw::collision::SphereSpecificData === |
||
==== 32-bit ==== |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Length !! Type !! Name !! Description !! Comments |
! Offset !! Length !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || void* || nothing || || |
| 0x0 || 0x4 || void* || nothing || || |
||
|} |
|||
==== 64-bit ==== |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description !! Comments |
|||
|- |
|||
| 0x0 || 0x8 || void* || nothing || || |
|||
|} |
|} |
||
Line 302: | Line 339: | ||
= Unions = |
= Unions = |
||
=== Anonymous union in Volume === |
=== Anonymous union in Volume === |
||
{{todo|The listed structures are currently undocumented.}} |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Length !! Type !! Name !! Description !! Comments |
! Length !! Type !! Name !! Description !! Comments |
||
Line 341: | Line 377: | ||
! Name !! Type !! Length !! Comments |
! Name !! Type !! Length !! Comments |
||
|- |
|- |
||
| AABBox || [[#AABBoxTemplate<Matrix44Affine,Vector3,AABBoxMemoryDumpPolicy>|AABBoxTemplate]] || |
| AABBox || [[#AABBoxTemplate<Matrix44Affine,Vector3,AABBoxMemoryDumpPolicy>|AABBoxTemplate]] || 0x20 || |
||
|} |
|} |
||
Line 349: | Line 385: | ||
|- |
|- |
||
| TargetPtr || uint32_t || 0x4 || |
| TargetPtr || uint32_t || 0x4 || |
||
|} |
|||
= Enumerations = |
|||
=== Prop joint type === |
|||
{| class="wikitable" |
|||
! Name !! Value !! Comments |
|||
|- |
|||
| ? || 0 || Not used |
|||
|- |
|||
| ? || 1 || |
|||
|- |
|||
| ? || 2 || |
|||
|- |
|||
| ? || 3 || |
|||
|- |
|||
| E_TILT || ? || From a hardcoded string |
|||
|} |
|||
=== Prop extra type info === |
|||
{| class="wikitable" |
|||
! Name !! Value !! Comments |
|||
|- |
|||
| ? || 0 || |
|||
|- |
|||
| ? || 1 || |
|||
|- |
|||
| ? || 2 || |
|||
|} |
|||
=== Volume flags === |
|||
{| class="wikitable" |
|||
! Name !! Value !! Comments |
|||
|- |
|||
| ? || 0x1 || IsEnabled? |
|||
|} |
|} |
Latest revision as of 09:25, 4 October 2023
PropPhysics | |
---|---|
Resource names | PRP_PHYSICS_ |
Type ID | 0x1000F |
Category | Game-specific (Burnout Paradise) |
Memory distribution |
Main Memory only |
Editor available? |
No |
The prop physics resource type handles collision attributes for props on a per-track unit basis.
Types
Prop Types List of prop types used in Burnout Paradise. |
Structures
BrnPhysics::Props::PropPhysicsDataHeader
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | muNumberOfPropTypes | Number of prop types | |
0x4 | 0x4 | uint32_t | muNumberOfVolumeTypes | Number of volume types | |
0x8 | 0x4 | uint32_t | muNumberOfPartTypes | Number of prop part types | |
0xC | 0x4 | uint32_t | muSizeInBytes | Resource size | |
0x10 | 0x7D0 | PropTypeData*[500] | mapPropTypes | Prop types | |
0x7E0 | 0x4B0 | PropPartTypeData*[300] | mapPropPartTypes | Prop part types | |
0xC90 | 0x2000 | Volume*[2048] | mapVolumeTypes | Volume types | |
0x2C90 | 0x4 | uint32_t | muTimeStamp | time_t timestamp | Null in Remastered |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | uint32_t | muNumberOfPropTypes | Number of prop types | |
0x4 | 0x4 | uint32_t | muNumberOfVolumeTypes | Number of volume types | |
0x8 | 0x4 | uint32_t | muNumberOfPartTypes | Number of prop part types | |
0xC | 0x4 | uint32_t | muSizeInBytes | Resource size | |
0x10 | 0xFA0 | PropTypeData*[500] | mapPropTypes | Prop types | |
0xFB0 | 0x960 | PropPartTypeData*[300] | mapPropPartTypes | Prop part types | |
0x1910 | 0x4000 | Volume*[2048] | mapVolumeTypes | Volume types | |
0x5910 | 0x4 | uint32_t | muTimeStamp | time_t timestamp | Null in Remastered |
BrnPhysics::Props::PropTypeData
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | Vector3 | mJointLocator | ||
0x10 | 0x10 | Vector3 | mCOMOffset | ||
0x20 | 0x10 | Vector3 | mInertia | ||
0x30 | 0x8 | ID | mResourceId | ||
0x38 | 0x4 | float32_t | mfMass | ||
0x3C | 0x4 | Volume* | maCollisionVolumes | ||
0x40 | 0x4 | PropPartTypeData* | maParts | Uninitialized in asset | |
0x44 | 0x4 | float32_t | mfSphereRadius | ||
0x48 | 0x4 | float32_t | mfMaxJointAngleCos | ||
0x4C | 0x4 | float32_t | mfLeanThreshold | ||
0x50 | 0x4 | float32_t | mfMoveThreshold | ||
0x54 | 0x4 | float32_t | mfSmashThreshold | ||
0x58 | 0x4 | uint32_t | muSceneUriId | ||
0x5C | 0x1 | uint8_t | muMaxState | ||
0x5D | 0x1 | uint8_t | muNumberOfParts | ||
0x5E | 0x1 | uint8_t | muNumberOfVolumes | ||
0x5F | 0x1 | uint8_t | mu8JointType | Joint type | |
0x60 | 0x1 | uint8_t | mu8ExtraTypeInfo | Extra type info | |
0x61 | 0xF | Padding |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | Vector3 | mJointLocator | ||
0x10 | 0x10 | Vector3 | mCOMOffset | ||
0x20 | 0x10 | Vector3 | mInertia | ||
0x30 | 0x8 | ID | mResourceId | ||
0x38 | 0x4 | float32_t | mfMass | ||
0x3C | 0x4 | Padding | |||
0x40 | 0x8 | Volume* | maCollisionVolumes | ||
0x48 | 0x8 | PropPartTypeData* | maParts | Uninitialized in asset | |
0x50 | 0x4 | float32_t | mfSphereRadius | ||
0x54 | 0x4 | float32_t | mfMaxJointAngleCos | ||
0x58 | 0x4 | float32_t | mfLeanThreshold | ||
0x5C | 0x4 | float32_t | mfMoveThreshold | ||
0x60 | 0x4 | float32_t | mfSmashThreshold | ||
0x64 | 0x4 | uint32_t | muSceneUriId | ||
0x68 | 0x1 | uint8_t | muMaxState | ||
0x69 | 0x1 | uint8_t | muNumberOfParts | ||
0x6A | 0x1 | uint8_t | muNumberOfVolumes | ||
0x6B | 0x1 | uint8_t | mu8JointType | Joint type | |
0x6C | 0x1 | uint8_t | mu8ExtraTypeInfo | Extra type info | |
0x6D | 0x3 | Padding |
BrnPhysics::Props::PropPartTypeData
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | Vector3 | mOffset | ||
0x10 | 0x10 | Vector3 | mInertia | ||
0x20 | 0x4 | float32_t | mfMass | ||
0x24 | 0x4 | Volume* | maCollisionVolumes | ||
0x28 | 0x4 | float32_t | mfSphereRadius | ||
0x2C | 0x1 | uint8_t | muNumberOfVolumes | ||
0x2D | 0x3 | Padding |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | Vector3 | mOffset | ||
0x10 | 0x10 | Vector3 | mInertia | ||
0x20 | 0x4 | float32_t | mfMass | ||
0x24 | 0x4 | Padding | |||
0x28 | 0x8 | Volume* | maCollisionVolumes | ||
0x30 | 0x4 | float32_t | mfSphereRadius | ||
0x34 | 0x1 | uint8_t | muNumberOfVolumes | ||
0x35 | 0x3 | Padding |
rw::collision::Volume
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x40 | Matrix44Affine | transform | ||
0x40 | 0x4 | VTable* | vTable | List of Volume functions | rw::collision::Volume::VTable |
0x44 | 0xC | Anonymous union | Volume data | ||
0x50 | 0x4 | float32_t | radius | ||
0x54 | 0x4 | uint32_t | groupID | ||
0x58 | 0x4 | uint32_t | surfaceID | ||
0x5C | 0x4 | uint32_t | m_flags | See volume flags |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x40 | Matrix44Affine | transform | ||
0x40 | 0x8 | VTable* | vTable | List of Volume functions | rw::collision::Volume::VTable |
0x48 | 0xC | Anonymous union | Volume data | ||
0x54 | 0x4 | Padding | |||
0x58 | 0x4 | float32_t | radius | ||
0x5C | 0x4 | uint32_t | groupID | ||
0x60 | 0x4 | uint32_t | surfaceID | ||
0x64 | 0x4 | uint32_t | m_flags | See volume flags |
rw::collision::AggregateSpecificData
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | Aggregate* | agg |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | Aggregate* | agg |
rw::collision::Aggregate
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x20 | AABBox | m_AABB | ||
0x20 | 0x4 | VTable* | m_vTable | List of Aggregate functions | rw::collision::Aggregate::VTable |
0x24 | 0x4 | uint32_t | m_numTagBits | ||
0x28 | 0x4 | uint32_t | m_numVolumes | ||
0x2C | 0x4 | uint32_t | pad |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x20 | AABBox | m_AABB | ||
0x20 | 0x8 | VTable* | m_vTable | List of Aggregate functions | rw::collision::Aggregate::VTable |
0x28 | 0x4 | uint32_t | m_numTagBits | ||
0x2C | 0x4 | uint32_t | m_numVolumes | ||
0x30 | 0x4 | uint32_t | pad | ||
0x34 | 0x4 | Padding |
AABBoxTemplate<Matrix44Affine,Vector3,AABBoxMemoryDumpPolicy>
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x10 | Vector3 | m_min | ||
0x10 | 0x10 | Vector3 | m_max |
rw::collision::SphereSpecificData
32-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | void* | nothing |
64-bit
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | void* | nothing |
rw::collision::CapsuleSpecificData
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | float32_t | hh |
rw::collision::TriangleSpecificData
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | float32_t | edgeCos0 | ||
0x4 | 0x4 | float32_t | edgeCos1 | ||
0x8 | 0x4 | float32_t | edgeCos2 |
rw::collision::BoxSpecificData
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | float32_t | hx | ||
0x4 | 0x4 | float32_t | hy | ||
0x8 | 0x4 | float32_t | hz |
rw::collision::CylinderSpecificData
Offset | Length | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | float32_t | hh | ||
0x4 | 0x4 | float32_t | innerRadius |
Unions
Anonymous union in Volume
Length | Type | Name | Description | Comments |
---|---|---|---|---|
0x4 | AggregateSpecificData | aggregateData | ||
0x4 | SphereSpecificData | sphereData | ||
0x4 | CapsuleSpecificData | capsuleData | ||
0xC | TriangleSpecificData | triangleData | ||
0xC | BoxSpecificData | boxData | ||
0x8 | CylinderSpecificData | cylinderData | ||
0x8 | TargetPtr[2] | sizeOfTargetPointer |
Typedefs
rw::collision::VolRef::Volume
32-bit
Name | Type | Length | Comments |
---|---|---|---|
Volume | Volume | 0x60 |
64-bit
Name | Type | Length | Comments |
---|---|---|---|
Volume | Volume | 0x68 |
rw::collision::AALineClipper::Init::AABBox
Name | Type | Length | Comments |
---|---|---|---|
AABBox | AABBoxTemplate | 0x20 |
TargetPtr
Name | Type | Length | Comments |
---|---|---|---|
TargetPtr | uint32_t | 0x4 |
Enumerations
Prop joint type
Name | Value | Comments |
---|---|---|
? | 0 | Not used |
? | 1 | |
? | 2 | |
? | 3 | |
E_TILT | ? | From a hardcoded string |
Prop extra type info
Name | Value | Comments |
---|---|---|
? | 0 | |
? | 1 | |
? | 2 |
Volume flags
Name | Value | Comments |
---|---|---|
? | 0x1 | IsEnabled? |