@@ -762,8 +762,8 @@ public HumanPose(ObjectReader reader)
762
762
if ( version [ 0 ] > 5 || ( version [ 0 ] == 5 && version [ 1 ] >= 2 ) ) //5.2 and up
763
763
{
764
764
m_TDoFArray = reader . ReadVector3Array ( ) ;
765
- }
766
765
}
766
+ }
767
767
768
768
public static HumanPose ParseGI ( ObjectReader reader )
769
769
{
@@ -1118,7 +1118,7 @@ public static DenseClip ParseGI(ObjectReader reader)
1118
1118
return denseClip ;
1119
1119
}
1120
1120
}
1121
- public class ArkDenseClip : DenseClip
1121
+ public class ACLDenseClip : DenseClip
1122
1122
{
1123
1123
public int m_ACLType ;
1124
1124
public byte [ ] m_ACLArray ;
@@ -1130,21 +1130,38 @@ public class ArkDenseClip : DenseClip
1130
1130
public uint m_nRotationCurves ;
1131
1131
public uint m_nEulerCurves ;
1132
1132
public uint m_nScaleCurves ;
1133
+ public uint m_nGenericCurves ;
1133
1134
1134
- public ArkDenseClip ( ObjectReader reader ) : base ( reader )
1135
+ public ACLDenseClip ( ObjectReader reader ) : base ( reader )
1135
1136
{
1136
1137
m_ACLType = reader . ReadInt32 ( ) ;
1137
- m_ACLArray = reader . ReadUInt8Array ( ) ;
1138
- reader . AlignStream ( ) ;
1139
- m_PositionFactor = reader . ReadSingle ( ) ;
1140
- m_EulerFactor = reader . ReadSingle ( ) ;
1141
- m_ScaleFactor = reader . ReadSingle ( ) ;
1142
- m_FloatFactor = reader . ReadSingle ( ) ;
1143
- m_nPositionCurves = reader . ReadUInt32 ( ) ;
1144
- m_nRotationCurves = reader . ReadUInt32 ( ) ;
1145
- m_nEulerCurves = reader . ReadUInt32 ( ) ;
1146
- m_nScaleCurves = reader . ReadUInt32 ( ) ;
1147
-
1138
+ if ( reader . Game . Type . IsArknightsEndfield ( ) )
1139
+ {
1140
+ m_ACLArray = reader . ReadUInt8Array ( ) ;
1141
+ reader . AlignStream ( ) ;
1142
+ m_PositionFactor = reader . ReadSingle ( ) ;
1143
+ m_EulerFactor = reader . ReadSingle ( ) ;
1144
+ m_ScaleFactor = reader . ReadSingle ( ) ;
1145
+ m_FloatFactor = reader . ReadSingle ( ) ;
1146
+ m_nPositionCurves = reader . ReadUInt32 ( ) ;
1147
+ m_nRotationCurves = reader . ReadUInt32 ( ) ;
1148
+ m_nEulerCurves = reader . ReadUInt32 ( ) ;
1149
+ m_nScaleCurves = reader . ReadUInt32 ( ) ;
1150
+ }
1151
+ else if ( reader . Game . Type . IsExAstris ( ) )
1152
+ {
1153
+ m_nPositionCurves = reader . ReadUInt32 ( ) ;
1154
+ m_nRotationCurves = reader . ReadUInt32 ( ) ;
1155
+ m_nEulerCurves = reader . ReadUInt32 ( ) ;
1156
+ m_nScaleCurves = reader . ReadUInt32 ( ) ;
1157
+ m_nGenericCurves = reader . ReadUInt32 ( ) ;
1158
+ m_PositionFactor = reader . ReadSingle ( ) ;
1159
+ m_EulerFactor = reader . ReadSingle ( ) ;
1160
+ m_ScaleFactor = reader . ReadSingle ( ) ;
1161
+ m_FloatFactor = reader . ReadSingle ( ) ;
1162
+ m_ACLArray = reader . ReadUInt8Array ( ) ;
1163
+ reader . AlignStream ( ) ;
1164
+ }
1148
1165
Process ( ) ;
1149
1166
}
1150
1167
@@ -1181,7 +1198,7 @@ private void Process()
1181
1198
{
1182
1199
sampleArray . Add ( ReadCurve ( aclSpan , m_ScaleFactor , ref index ) ) ;
1183
1200
}
1184
- var m_nFloatCurves = m_CurveCount - ( m_nPositionCurves + m_nRotationCurves + m_nEulerCurves + m_nScaleCurves ) ;
1201
+ var m_nFloatCurves = m_CurveCount - ( m_nPositionCurves + m_nRotationCurves + m_nEulerCurves + m_nScaleCurves + m_nGenericCurves ) ;
1185
1202
for ( int j = 0 ; j < m_nFloatCurves ; j ++ )
1186
1203
{
1187
1204
sampleArray . Add ( ReadCurve ( aclSpan , m_FloatFactor , ref index ) ) ;
@@ -1299,9 +1316,9 @@ public Clip(ObjectReader reader)
1299
1316
{
1300
1317
var version = reader . version ;
1301
1318
m_StreamedClip = new StreamedClip ( reader ) ;
1302
- if ( reader . Game . Type . IsArknightsEndfield ( ) )
1319
+ if ( reader . Game . Type . IsArknightsEndfield ( ) || reader . Game . Type . IsExAstris ( ) )
1303
1320
{
1304
- m_DenseClip = new ArkDenseClip ( reader ) ;
1321
+ m_DenseClip = new ACLDenseClip ( reader ) ;
1305
1322
}
1306
1323
else
1307
1324
{
@@ -1866,6 +1883,11 @@ public AnimationClip(ObjectReader reader) : base(reader)
1866
1883
m_CompressedRotationCurves . Add ( new CompressedAnimationCurve ( reader ) ) ;
1867
1884
}
1868
1885
1886
+ if ( reader . Game . Type . IsExAstris ( ) )
1887
+ {
1888
+ var m_aclType = reader . ReadInt32 ( ) ;
1889
+ }
1890
+
1869
1891
if ( version [ 0 ] > 5 || ( version [ 0 ] == 5 && version [ 1 ] >= 3 ) ) //5.3 and up
1870
1892
{
1871
1893
int numEulerCurves = reader . ReadInt32 ( ) ;
0 commit comments