GlitcherOG (talk | contribs) (Insert Header) |
GlitcherOG (talk | contribs) No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=== PBD Header === |
|||
<syntaxhighlight lang="c++" line="1"> |
<syntaxhighlight lang="c++" line="1"> |
||
enum class eDataFormatType : byte { |
enum class eDataFormatType : byte { |
||
Line 11: | Line 12: | ||
eDataFormatType format; |
eDataFormatType format; |
||
uint32 NumPlayerStarts; |
uint32 NumPlayerStarts; //Not Used |
||
uint32 NumPatches; |
uint32 NumPatches; |
||
uint32 NumInstances; |
uint32 NumInstances; |
||
Line 21: | Line 22: | ||
uint32 NumSplineSegments; |
uint32 NumSplineSegments; |
||
uint32 NumTextureFlips; |
uint32 NumTextureFlips; |
||
uint32 |
uint32 NumPrefabs; |
||
uint32 NumParticleModels; |
uint32 NumParticleModels; |
||
uint32 NumTextures; |
uint32 NumTextures; //Not Used |
||
uint32 NumCameras; |
uint32 NumCameras; |
||
uint32 LightMapSize; |
uint32 LightMapSize; //Not Used |
||
uint32 PlayerStartOffset; |
|||
uint32 PlayerStartOffset; //Not Used |
|||
uint32 PatchOffset; |
uint32 PatchOffset; |
||
uint32 InstanceOffset; |
uint32 InstanceOffset; |
||
Line 36: | Line 38: | ||
uint32 SplineSegmentOffset; |
uint32 SplineSegmentOffset; |
||
uint32 TextureFlipOffset; |
uint32 TextureFlipOffset; |
||
uint32 |
uint32 PrefabPointerOffset; |
||
uint32 |
uint32 PrefabsOffset; |
||
uint32 ParticleModelPointerOffset; |
uint32 ParticleModelPointerOffset; |
||
uint32 ParticleModelsOffset; |
uint32 ParticleModelsOffset; |
||
Line 45: | Line 47: | ||
uint32 MeshDataOffset |
uint32 MeshDataOffset |
||
}; |
}; |
||
</syntaxhighlight> |
|||
=== Patch Data === |
|||
<syntaxhighlight lang="c++" line="1"> |
|||
public struct Patch |
|||
{ |
|||
Vector4 LightMapPoint; |
|||
Vector4 UVPoint1; |
|||
Vector4 UVPoint2; |
|||
Vector4 UVPoint3; |
|||
Vector4 UVPoint4; |
|||
Vector4 R4C4; |
|||
Vector4 R4C3; |
|||
Vector4 R4C2; |
|||
Vector4 R4C1; |
|||
Vector4 R3C4; |
|||
Vector4 R3C3; |
|||
Vector4 R3C2; |
|||
Vector4 R3C1; |
|||
Vector4 R2C4; |
|||
Vector4 R2C3; |
|||
Vector4 R2C2; |
|||
Vector4 R2C1; |
|||
Vector4 R1C4; |
|||
Vector4 R1C3; |
|||
Vector4 R1C2; |
|||
Vector4 R1C1; |
|||
Vector3 LowestXYZ; |
|||
Vector3 HighestXYZ; |
|||
Vector4 Point1; |
|||
Vector4 Point2; |
|||
Vector4 Point3; |
|||
Vector4 Point4; |
|||
uint32 PatchStyle; |
|||
uint16 Unknown1; |
|||
uint16 PatchVisablity; |
|||
uint16 TextureAssigment; |
|||
uint16 LightmapID; |
|||
//Always the same |
|||
uint32 Unknown2; |
|||
uint32 Unknown3; |
|||
uint32 Unknown4; |
|||
} |
|||
</syntaxhighlight> |
|||
=== '''Instance Data''' === |
|||
<syntaxhighlight lang="c++"> |
|||
public struct Instance |
|||
{ |
|||
public Matrix4x4 matrix4X4; |
|||
public Vector4 Unknown1; |
|||
public Vector4 Unknown2; |
|||
public Vector4 Unknown3; |
|||
public Vector4 Unknown4; |
|||
public Vector4 Unknown5; |
|||
public Vector4 Unknown6; |
|||
public Vector4 Unknown7; |
|||
public Vector4 RGBA; |
|||
public int ModelID; |
|||
public int PrevInstance; //Seems to be used if instances are grouped together for animations (Mainly Fences) |
|||
public int NextInstance; |
|||
public Vector3 LowestXYZ; |
|||
public Vector3 HighestXYZ; |
|||
public uint32 UnknownInt8; |
|||
public uint32 UnknownInt9; |
|||
public uint32 UnknownInt10; |
|||
public uint32 ModelID2; |
|||
public uint32 UnknownInt11; |
|||
public uint32 UnknownInt12; |
|||
public uint32 UnknownInt13; |
|||
} |
|||
</syntaxhighlight> |
|||
=== Particle Instances === |
|||
<syntaxhighlight lang="c++" line="1"> |
|||
public struct ParticleInstance |
|||
{ |
|||
public Matrix4x4 matrix4X4; |
|||
public uint32 UnknownInt1; |
|||
public Vector3 LowestXYZ; |
|||
public Vector3 HighestXYZ; |
|||
public uint32 UnknownInt2; |
|||
public uint32 UnknownInt3; |
|||
public uint32 UnknownInt4; |
|||
public uint32 UnknownInt5; |
|||
public uint32 UnknownInt6; |
|||
} |
|||
</syntaxhighlight> |
|||
=== Spline And Spline Segment Data === |
|||
<syntaxhighlight lang="c++" line="1"> |
|||
public struct Spline |
|||
{ |
|||
Vector3 LowestXYZ; |
|||
Vector3 HighestXYZ; |
|||
uint32 Unknown1; |
|||
uint32 SplineSegmentCount; |
|||
uint32 SplineSegmentPosition; |
|||
uint32 Unknown2; |
|||
} |
|||
public struct SplinesSegments |
|||
{ |
|||
Vector4 Point4; |
|||
Vector4 Point3; |
|||
Vector4 Point2; |
|||
Vector4 ControlPoint; |
|||
Vector4 AnimationFloats; //Not really sure how they are used |
|||
uint32 PreviousSegment; |
|||
uint32 NextSegment; |
|||
uint32 SplineParent; |
|||
Vector3 LowestXYZ; |
|||
Vector3 HighestXYZ; |
|||
float SegmentDisatnce; |
|||
float PreviousSegmentsDistance; |
|||
uint32 Unknown1; |
|||
} |
|||
</syntaxhighlight> |
|||
=== Materials and Material Blocks === |
|||
<syntaxhighlight lang="c++" line="1"> |
|||
public struct TrickyMaterial |
|||
{ |
|||
public int TextureID; |
|||
public int UnknownInt2; |
|||
public int UnknownInt3; |
|||
public float UnknownFloat1; |
|||
public float UnknownFloat2; |
|||
public float UnknownFloat3; |
|||
public float UnknownFloat4; |
|||
public int UnknownInt8; |
|||
public float UnknownFloat5; |
|||
public float UnknownFloat6; |
|||
public float UnknownFloat7; |
|||
public float UnknownFloat8; |
|||
public int UnknownInt13; |
|||
public int UnknownInt14; |
|||
public int UnknownInt15; |
|||
public int UnknownInt16; |
|||
public int UnknownInt17; |
|||
public int UnknownInt18; |
|||
public int TextureFlipbookID; |
|||
public int UnknownInt20; |
|||
} |
|||
public struct MaterialBlock |
|||
{ |
|||
public int BlockCount; |
|||
public int[] MaterialIDS; |
|||
} |
|||
</syntaxhighlight> |
</syntaxhighlight> |
Latest revision as of 08:43, 25 May 2023
PBD Header
enum class eDataFormatType : byte {
GenericFormat,
Ps2Format,
XboxFormat,
NgcFormat
};
struct tPbdHeader {
byte version[3];
eDataFormatType format;
uint32 NumPlayerStarts; //Not Used
uint32 NumPatches;
uint32 NumInstances;
uint32 NumParticleInstances;
uint32 NumMaterials;
uint32 NumMaterialBlocks;
uint32 NumLights;
uint32 NumSplines;
uint32 NumSplineSegments;
uint32 NumTextureFlips;
uint32 NumPrefabs;
uint32 NumParticleModels;
uint32 NumTextures; //Not Used
uint32 NumCameras;
uint32 LightMapSize; //Not Used
uint32 PlayerStartOffset; //Not Used
uint32 PatchOffset;
uint32 InstanceOffset;
uint32 ParticleInstancesOffset;
uint32 MaterialOffset;
uint32 MaterialBlocksOffset;
uint32 LightsOffset;
uint32 SplineOffset;
uint32 SplineSegmentOffset;
uint32 TextureFlipOffset;
uint32 PrefabPointerOffset;
uint32 PrefabsOffset;
uint32 ParticleModelPointerOffset;
uint32 ParticleModelsOffset;
uint32 CameraPointerOffset;
uint32 CamerasOffset;
uint32 HashOffset;
uint32 MeshDataOffset
};
Patch Data
public struct Patch
{
Vector4 LightMapPoint;
Vector4 UVPoint1;
Vector4 UVPoint2;
Vector4 UVPoint3;
Vector4 UVPoint4;
Vector4 R4C4;
Vector4 R4C3;
Vector4 R4C2;
Vector4 R4C1;
Vector4 R3C4;
Vector4 R3C3;
Vector4 R3C2;
Vector4 R3C1;
Vector4 R2C4;
Vector4 R2C3;
Vector4 R2C2;
Vector4 R2C1;
Vector4 R1C4;
Vector4 R1C3;
Vector4 R1C2;
Vector4 R1C1;
Vector3 LowestXYZ;
Vector3 HighestXYZ;
Vector4 Point1;
Vector4 Point2;
Vector4 Point3;
Vector4 Point4;
uint32 PatchStyle;
uint16 Unknown1;
uint16 PatchVisablity;
uint16 TextureAssigment;
uint16 LightmapID;
//Always the same
uint32 Unknown2;
uint32 Unknown3;
uint32 Unknown4;
}
Instance Data
public struct Instance
{
public Matrix4x4 matrix4X4;
public Vector4 Unknown1;
public Vector4 Unknown2;
public Vector4 Unknown3;
public Vector4 Unknown4;
public Vector4 Unknown5;
public Vector4 Unknown6;
public Vector4 Unknown7;
public Vector4 RGBA;
public int ModelID;
public int PrevInstance; //Seems to be used if instances are grouped together for animations (Mainly Fences)
public int NextInstance;
public Vector3 LowestXYZ;
public Vector3 HighestXYZ;
public uint32 UnknownInt8;
public uint32 UnknownInt9;
public uint32 UnknownInt10;
public uint32 ModelID2;
public uint32 UnknownInt11;
public uint32 UnknownInt12;
public uint32 UnknownInt13;
}
Particle Instances
public struct ParticleInstance
{
public Matrix4x4 matrix4X4;
public uint32 UnknownInt1;
public Vector3 LowestXYZ;
public Vector3 HighestXYZ;
public uint32 UnknownInt2;
public uint32 UnknownInt3;
public uint32 UnknownInt4;
public uint32 UnknownInt5;
public uint32 UnknownInt6;
}
Spline And Spline Segment Data
public struct Spline
{
Vector3 LowestXYZ;
Vector3 HighestXYZ;
uint32 Unknown1;
uint32 SplineSegmentCount;
uint32 SplineSegmentPosition;
uint32 Unknown2;
}
public struct SplinesSegments
{
Vector4 Point4;
Vector4 Point3;
Vector4 Point2;
Vector4 ControlPoint;
Vector4 AnimationFloats; //Not really sure how they are used
uint32 PreviousSegment;
uint32 NextSegment;
uint32 SplineParent;
Vector3 LowestXYZ;
Vector3 HighestXYZ;
float SegmentDisatnce;
float PreviousSegmentsDistance;
uint32 Unknown1;
}
Materials and Material Blocks
public struct TrickyMaterial
{
public int TextureID;
public int UnknownInt2;
public int UnknownInt3;
public float UnknownFloat1;
public float UnknownFloat2;
public float UnknownFloat3;
public float UnknownFloat4;
public int UnknownInt8;
public float UnknownFloat5;
public float UnknownFloat6;
public float UnknownFloat7;
public float UnknownFloat8;
public int UnknownInt13;
public int UnknownInt14;
public int UnknownInt15;
public int UnknownInt16;
public int UnknownInt17;
public int UnknownInt18;
public int TextureFlipbookID;
public int UnknownInt20;
}
public struct MaterialBlock
{
public int BlockCount;
public int[] MaterialIDS;
}