В файлах исходных кодов смотрите файлы entity.h и entity.cpp
По идеи структура должна быть такой:
Оффтоп
Код:
[filemask="*.r3e"]
struct EntityFile
{
u32 version;
u32 Identity;
u32 CompHeaderOffset;
u32 CompHeaderSize;
child CompHeader [group="CompHeader ", offset=CompHeaderOffset, count=CompHeaderSize/38];
calc [value=(CompHeaderSize/38)] CompHeaderNum;
u32 VertexOffset;
u32 VertexSize;
child Vertex [group="Vertex ", offset=VertexOffset, count=VertexSize/6]; // child Vertex [group="Vertex ", offset=VertexOffset, count=VertexSize/12];
calc [value=(VertexSize/6)] VertexNum; // calc [value=(VertexSize/12)] VertexNum;
u32 VColorOffset;
u32 VColorSize;
child VColor [group="VColor ", offset=VColorOffset, count=VColorSize/4];
calc [value=(VColorSize/4)] VColorNum;
u32 UVOffset;
u32 UVSize;
child UV [group="UV ", offset=UVOffset, count=UVSize/4];
calc [value=(UVSize/4)] UVNum;
u32 FaceOffset;
u32 FaceSize;
child Face [group="Face ", offset=FaceOffset, count=FaceSize/16];
calc [value=(FaceSize/16)] FaceNum;
u32 FaceIDOffset;
u32 FaceIDSize;
child FaceID [group="FaceID ", offset=FaceIDOffset, count=FaceIDSize/2];
calc [value=(FaceIDSize/2)] FaceIDNum;
u32 VertexIDOffset;
u32 VertexIDSize;
child VertexID [group="VertexID ", offset=VertexIDOffset, count=VertexIDSize/2];
calc [value=(VertexIDSize/2)] VertexIDNum;
u32 MatGroupOffset;
u32 MatGroupSize;
child MatGroup [group="MatGroup ", offset=MatGroupOffset, count=MatGroupSize/22];
calc [value=(MatGroupSize/22)] MatGroupNum;
u32 ObjectOffset;
u32 ObjectSize;
child Object [group="Object ", offset=ObjectOffset, count=ObjectSize/88];
calc [value=(ObjectSize/88)] ObjectNum;
u32 TrackOffset;
u32 TrackSize;
child Track [group="Track ", offset=TrackOffset, count=TrackSize/4];
calc [value=(TrackSize/4)] TrackNum;
}
struct CompHeader
{
u16 type;
repeat 3
{
i16 bb_min;
}
repeat 3
{
i16 bb_max;
}
repeat 3
{
float pos;
}
float scale;
float uv_min;
float uv_max;
}
struct Vertex
{
repeat 3
{
i16 vertex; // float
}
}
struct VColor
{
u32 color;
}
struct UV
{
repeat 2
{
i16 uv;
}
}
struct Face
{
u16 v_num;
u32 v_start_id;
}
struct FaceID
{
u16 f_id;
}
struct VertexID
{
u16 v_id;
}
struct MatGroup
{
u16 face_num;
u32 face_start_id;
i16 mtl_id;
u16 object_id;
repeat 3
{
i16 bb_min;
}
repeat 3
{
i16 bb_max;
}
}
struct Object
{
u16 flag;
u16 parent;
i32 frames;
i32 Pos_cnt;
i32 Rot_cnt;
i32 Scale_cnt;
repeat 3
{
float scale;
}
repeat 4
{
float scale_quat;
}
repeat 3
{
float pos;
}
repeat 4
{
float quat;
}
u32 pos_offset;
u32 rot_offset;
u32 scale_offset;
}
struct Track
{
float track; // i8
}