-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathdfrm.bt
66 lines (56 loc) · 1.66 KB
/
dfrm.bt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
LittleEndian();
struct DfrmHeader
{
char Signature[4]; //DFRM
float Version; Assert(Version == 1.0); //1.0
uint HeaderSize; Assert(HeaderSize == 0x40);
uint SubmeshDefCount;
uint BlendShapeSpanCount;
uint Block5SpanCount;
uint BlendShapeSpanIndexCount;
uint BlendShapeCount;
uint Block5Count;
uint SubmeshDefsOffset;
uint BlendShapeSpansOffset;
uint Block5SpansOffset;
uint BlendShapeSpanIndicesOffset;
uint BlendShapesOffset;
uint Block5sOffset;
FSkip(4);
} Header;
// Just Span<uint> for BlendShapeSpanIndices the size of the submesh's vertex count
FSeek(Header.SubmeshDefsOffset);
struct SubmeshDef
{
uint BlendShapeSpanIndices_Count;
uint BlendShapeSpanIndices_StartOffset;
} SubmeshDefs[Header.SubmeshDefCount] <bgcolor = 0xD2EA97>;
// Just Span<BlendShape>
FSeek(Header.BlendShapeSpansOffset);
struct BlendShapeSpan
{
uint BlendShape_Count;
uint BlendShape_StartOffset;
} BlendShapeSpans[Header.BlendShapeSpanCount] <bgcolor = 0xA1C78C>;
// Just Span<Block5>
FSeek(Header.Block5SpansOffset);
struct Block5Span
{
uint Block5_Count;
uint Block5_StartOffset;
} Block5Spans[Header.Block5SpanCount] <bgcolor = 0x946E81, fgcolor = cLtGray>;
FSeek(Header.BlendShapeSpanIndicesOffset);
uint BlendShapeSpanIndices[Header.BlendShapeSpanIndexCount] <bgcolor = 0x74226C, fgcolor = 0xa0a0a0>;
// Unknown
FSeek(Header.BlendShapesOffset);
struct BlendShape
{
ushort SubmeshIndex;
ushort Unknown1;
} BlendShapes[Header.BlendShapeCount] <optimize = false, bgcolor = 0x42214B, fgcolor = 0xc0c0c0>;
// Unknown
FSeek(Header.Block5sOffset);
struct Block5
{
uint BlendShapeSpanIndex;
} Block5s[Header.Block5Count] <optimize = false, bgcolor = 0x53355B, fgcolor = 0xd0d0d0>;