From a3489cf0254004e9a063075d3fbe53d7f90892ce Mon Sep 17 00:00:00 2001 From: Razmoth <32140579+Razmoth@users.noreply.github.com> Date: Wed, 18 Oct 2023 16:35:45 +0400 Subject: [PATCH] - [Core] Fix issue with parsing `AnimationClip` [SR] --- AssetStudio/Classes/AnimationClip.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/AssetStudio/Classes/AnimationClip.cs b/AssetStudio/Classes/AnimationClip.cs index c0aa4d6..f2e14d9 100644 --- a/AssetStudio/Classes/AnimationClip.cs +++ b/AssetStudio/Classes/AnimationClip.cs @@ -1238,6 +1238,7 @@ namespace AssetStudio public bool m_KeepOriginalPositionY; public bool m_KeepOriginalPositionXZ; public bool m_HeightFromFeet; + public static bool HasShortIndexArray(SerializedType type) => type.Match("E708B1872AE48FD688AC012DF4A7A178"); public ClipMuscleConstant() { } public ClipMuscleConstant(ObjectReader reader) @@ -1265,7 +1266,14 @@ namespace AssetStudio m_CycleOffset = reader.ReadSingle(); m_AverageAngularSpeed = reader.ReadSingle(); - m_IndexArray = reader.ReadInt32Array(); + if (reader.Game.Type.IsSR() && HasShortIndexArray(reader.serializedType)) + { + m_IndexArray = reader.ReadInt16Array().Select(x => (int)x).ToArray(); + } + else + { + m_IndexArray = reader.ReadInt32Array(); + } if (version[0] < 4 || (version[0] == 4 && version[1] < 3)) //4.3 down { var m_AdditionalCurveIndexArray = reader.ReadInt32Array();