Skel_Z - widberg/fmtk GitHub Wiki
This is a Data Class.
struct Skel_Z : ResourceObject_Z {
std::uint32_t flags;
// ObjectDatas_Z
// same flags as LodData_Z
Sphere_Z boundingSphereCenter;
PascalArray<struct Bone {
crc32_t userDefineCRC32;
Quat transformRotationInverse0;
Vec3f transformScale;
std::uint32_t boneFlags;
Vec3f transformRow3;
// not exactly equal but definitely related
std::uint32_t childBoneBegin;
Vec3f transformRow0;
std::uint16_t somePlaceholder0;
// placeholder junk value from the exporter
std::uint16_t somePlaceholder1;
// placeholder junk value from the exporter
Vec3f transformRow1;
std::uint32_t someMatPtr1Placeholder;
// placeholder junk pointer from the exporter
Vec3f transformRow2;
std::uint32_t someMatPtr2Placeholder;
// placeholder junk pointer from the exporter
Quat transformRotationInverse1;
Vec3i32 placeholderVec0;
// (-1, -1, -1) on latest
// (0, 0, 0) on p_moto and traffic_tm
std::uint32_t parentBonePtrPlaceholder;
// placeholder junk pointer from the exporter
Vec3i32 placeholderVec1;
// (-1, -1, -1) on latest
// (0, 0, 0) on p_moto and traffic_tm
std::uint32_t someBonePtrPlaceholder;
// placeholder junk pointer from the exporter
Vec3i32 placeholderVec2;
// (-1, -1, -1) on latest
// (0, 0, 0) on p_moto and traffic_tm
std::uint32_t childBonePtrPlaceholder;
// placeholder junk pointer from the exporter
Mat4f transformation;
std::int32_t parentIndex;
std::int32_t childBonesIndex0;
std::int32_t childBonesIndex1;
std::int32_t someBoneIndex;
crc32_t boneName;
}> bones;
PascalArray<crc32_t> materialCRC32s;
PascalArray<crc32_t> meshDataCRC32s;
PascalArray<PascalArray<crc32_t>> animationNodeNamesArrays;
PascalArray<crc32_t> someNames;
PascalArray<struct SphereColBone {
Sphere_Z sphere;
crc32_t names[3];
}> sphereColBones0;
PascalArray<SphereColBone> sphereColBones1;
PascalArray<struct BoxColBone {
Mat4f mat;
crc32_t names[3];
}> boxColBones;
};
//------------------------------------------------
//--- 010 Editor v11.0.1 Binary Template
//------------------------------------------------
struct Skel_Z
{
uint32 u0;
float u1;
float u2;
float u3;
float u4;
uint32 boneCount;
struct Bone
{
uint32 userDefineCRC32;
float quat[4];
float vec0[3];
uint32 boneFlags;
float vec1[3];
uint32 childBonesBegin;
float vec2[3];
uint32 someMatPtr0;
float vec3[3];
uint32 someMatPtr1;
float vec4[3];
uint32 someMatPtr2;
float quat1[4];
int32 vec5[3];
uint32 parentBonePtr;
int32 vec6[3];
uint32 someBonePtr;
int32 vec7[3];
uint32 childBonePtr;
float transformation[16];
int32 parentIndex;
int32 childBonesIndex0;
int32 childBonesIndex1;
int32 someBoneIndex;
uint32 someBoneName;
} bones[boneCount];
uint32 materialCRC32Count;
uint32 materialCRC32s[materialCRC32Count];
uint32 meshDataCRC32Count;
uint32 meshDataCRC32s[meshDataCRC32Count];
uint32 unknown0Count;
struct Unknown0
{
uint32 animationNodeNamesArrayCount;
uint32 animationNodeNamesArrays[animationNodeNamesArrayCount];
} unknown0s[unknown0Count] <optimize=false>;
uint32 someNameCount;
uint32 someNames[someNameCount];
uint32 sphereColBones0Count;
struct SphereColBone
{
float position[3];
float radius;
uint32 names[3];
} sphereColBones0[sphereColBones0Count];
uint32 sphereColBones1Count;
SphereColBone sphereColBones1[sphereColBones1Count];
uint32 boxColBoneCount;
struct BoxColBone
{
float mat[16];
uint32 names[3];
} boxColBones[boxColBoneCount];
} skel;