Code: Select all
dword SCN_Version //? alway 1
<object>
<object>
...
struct Common_Obj_Properties {
dword Object_ID
char[] Object_Name
char[] Parent_Name
float ?? //always 0.1
float[16] Object_Transform_Matrix //Object_Version = 0.1 parent base, or 0.2 world base
float Object_Version
}
struct SCN_ROOT { //Object_ID = 0x6278D57A
Common_Obj_Properties
dword num_Object
*char[] ?? //only on Object_Version = 0.2
}
struct Bonesystem { //Object_ID = 0x5E74333F
Common_Obj_Properties
}
struct Bone { //Object_ID = 0x6D411AD1
Common_Obj_Properties
dword num_Animation
struct Anim {
char[] Anim_Name
*char[] Anim_Copy //same animation as this name
dword Anim_Tick_Time
byte Unknown_Flag
float[3] Initial_Translation
float[4] Initial_Rotation
float[3] Initial_Scale
dword num_Trans_Animation
struct Trans_Anim {
dword Tick_Time
float[3] Trans_XYZ
}
dword num_Rotate_Animation
struct Rotate_Anim {
dword Tick_Time
float[4] Rotate_XYZW
}
dword num_Scale_Animation
struct Scale_Anim {
dword Tick_Time
float[3] Scale_XYZ
}
dword num_Visibility_Animation
struct Visibility_Anim {
dword Tick_Time
float Visibility_Value
}
}
}
struct Helper { //?? Object_ID = 0x25ADF0D1
Common_Obj_Properties
float[16] ??
}
struct Light { //?? Object_ID = 0xC3E8BE62
Common_Obj_Properties
float[4] Color01_RGBA
float[4] Color02_RGBA
float[4] Color03_RGBA
float[11] ??
}
struct Line { //?? Object_ID = ADEE38A2
Common_Obj_Properties
float[7] ??
}
struct Mesh { //Object_ID = 0x081098F8
Common_Obj_Properties
dword ??
float ??
dword ExtraUVs
dword num_Texture
struct Texture {
char[128] Texture_Name
dword Face_Start
dword Face_Count
}
dword num_Vert
struct Vert_Coord {
float[3] Coord_XYZ
}
dword num_Face
struct Face {
word[3] Index_XYZ
}
dword num_Normal
struct Normal {
float[3] Normal_XYZ
}
dword num_UV
struct UV {
float[2] Tex_UV
}
dword num_Tangent
struct Tangent {
float[3] Tangent_XYZ
}
struct Skin {
dword num_Skin_Bone
struct Skin_Bone {
char[] Bone_Name
float[16] Inverse_Matrix
dword num_Skin_Data
struct Skin_Data {
dword Vert_Index
float weight
}
}
}
dword num_Animation
struct Anim {
char[] Anim_Name
*char[] Anim_Copy //same animation as this name
dword Anim_Tick_Time
byte Unknown_Flag
float[3] Initial_Translation
float[4] Initial_Rotation
float[3] Initial_Scale
dword num_Trans_Animation
struct Trans_Anim {
dword Tick_Time
float[3] Trans_XYZ
}
dword num_Rotate_Animation
struct Rotate_Anim {
dword Tick_Time
float[4] Rotate_XYZW
}
dword num_Scale_Animation
struct Scale_Anim {
dword Tick_Time
float[3] Scale_XYZ
}
dword num_Visibility_Animation
struct Visibility_Anim {
dword Tick_Time
float Visibility_Value
}
dword num_Morph_Animation //??
struct Morph_Animation {
dword Tick_Time
dword count1
struct Anim_Data1 {
dword Index
float[3] value
}
dword count2
struct Anim_Data2 {
dword Index
word[2] ?? //?
float value
}
}
}
}