Skip to content

Commit 8d4e7e3

Browse files
committed
fix XAE3 delta quats
1 parent 34e3904 commit 8d4e7e3

File tree

3 files changed

+28
-18
lines changed

3 files changed

+28
-18
lines changed

src/IW4/Structs.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2072,6 +2072,7 @@ namespace ZoneTool
20722072
__declspec(align(2)) XAnimPartTransData u;
20732073
};
20742074

2075+
#pragma pack(push, 4)
20752076
struct XAnimDeltaPartQuatDataFrames2
20762077
{
20772078
__int16(*frames)[2];
@@ -2099,13 +2100,13 @@ namespace ZoneTool
20992100
union XAnimDeltaPartQuatData
21002101
{
21012102
XAnimDeltaPartQuatDataFrames frames;
2102-
__int16 frame0[2];
2103+
__int16 frame0[4];
21032104
};
21042105

21052106
struct XAnimDeltaPartQuat
21062107
{
21072108
unsigned __int16 size;
2108-
__declspec(align(4)) XAnimDeltaPartQuatData u;
2109+
XAnimDeltaPartQuatData u;
21092110
};
21102111

21112112
struct XAnimDeltaPart
@@ -2115,7 +2116,6 @@ namespace ZoneTool
21152116
XAnimDeltaPartQuat* quat;
21162117
};
21172118

2118-
#pragma pack(push, 4)
21192119
struct XAnimNotifyInfo
21202120
{
21212121
short name;

src/IW5/Assets/XAnimParts.cpp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,21 @@ namespace ZoneTool
184184
if (asset->delta->quat2)
185185
{
186186
asset->delta->quat2 = reader.read_raw<XAnimDeltaPartQuat2>();
187+
188+
if (asset->delta->quat2->size && asset->delta->quat2->u.frames.frames)
189+
{
190+
asset->delta->quat2->u.frames.frames = reader.read_raw<short[2]>();
191+
}
187192
}
188193

189194
if (asset->delta->quat)
190195
{
191196
asset->delta->quat = reader.read_raw<XAnimDeltaPartQuat>();
197+
198+
if (asset->delta->quat->size && asset->delta->quat->u.frames.frames)
199+
{
200+
asset->delta->quat->u.frames.frames = reader.read_raw<short[4]>();
201+
}
192202
}
193203
}
194204

@@ -580,11 +590,6 @@ namespace ZoneTool
580590
{
581591
extra_size += asset->delta->quat2->size + 1;
582592
}
583-
584-
if (asset->delta->quat2->u.frames.frames)
585-
{
586-
extra_size += (asset->delta->quat2->size * 4) + 4;
587-
}
588593
}
589594
else
590595
{
@@ -593,6 +598,11 @@ namespace ZoneTool
593598
}
594599

595600
dump.dump_raw(asset->delta->quat2, sizeof(XAnimDeltaPartQuat2) + extra_size);
601+
602+
if (asset->delta->quat2->size && asset->delta->quat2->u.frames.frames)
603+
{
604+
dump.dump_raw(asset->delta->quat2->u.frames.frames, (asset->delta->quat2->size * 4) + 4);
605+
}
596606
}
597607

598608
if (asset->delta->quat)
@@ -609,11 +619,6 @@ namespace ZoneTool
609619
{
610620
extra_size += asset->delta->quat->size + 1;
611621
}
612-
613-
if (asset->delta->quat->u.frames.frames)
614-
{
615-
extra_size += (asset->delta->quat->size * 8) + 8;
616-
}
617622
}
618623
else
619624
{
@@ -622,6 +627,11 @@ namespace ZoneTool
622627
}
623628

624629
dump.dump_raw(asset->delta->quat, sizeof(XAnimDeltaPartQuat) + extra_size);
630+
631+
if (asset->delta->quat->size && asset->delta->quat->u.frames.frames)
632+
{
633+
dump.dump_raw(asset->delta->quat->u.frames.frames, (asset->delta->quat->size * 8) + 8);
634+
}
625635
}
626636
}
627637

src/IW5/Structs.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,6 +1347,7 @@ namespace ZoneTool
13471347
__declspec(align(2)) XAnimPartTransData u;
13481348
};
13491349

1350+
#pragma pack(push, 4)
13501351
struct XAnimDeltaPartQuatDataFrames2
13511352
{
13521353
__int16(*frames)[2];
@@ -1368,29 +1369,28 @@ namespace ZoneTool
13681369
struct XAnimDeltaPartQuatDataFrames
13691370
{
13701371
__int16(*frames)[4];
1371-
XAnimDynamicIndices indices;
1372+
XAnimIndices indices;
13721373
};
13731374

13741375
union XAnimDeltaPartQuatData
13751376
{
13761377
XAnimDeltaPartQuatDataFrames frames;
1377-
__int16 frame0[2];
1378+
__int16 frame0[4];
13781379
};
13791380

13801381
struct XAnimDeltaPartQuat
13811382
{
13821383
unsigned __int16 size;
1383-
__declspec(align(4)) XAnimDeltaPartQuatData u;
1384+
XAnimDeltaPartQuatData u;
13841385
};
1385-
1386+
13861387
struct XAnimDeltaPart
13871388
{
13881389
XAnimPartTrans* trans;
13891390
XAnimDeltaPartQuat2* quat2;
13901391
XAnimDeltaPartQuat* quat;
13911392
};
13921393

1393-
#pragma pack(push, 4)
13941394
struct XAnimNotifyInfo
13951395
{
13961396
short name;

0 commit comments

Comments
 (0)