diff --git a/AssetStudio/Classes/AnimationClip.cs b/AssetStudio/Classes/AnimationClip.cs index 29b26fa..c0aa4d6 100644 --- a/AssetStudio/Classes/AnimationClip.cs +++ b/AssetStudio/Classes/AnimationClip.cs @@ -1690,7 +1690,7 @@ namespace AssetStudio m_MuscleClipSize = reader.ReadUInt32(); m_MuscleClip = ClipMuscleConstant.ParseGI(reader); } - else + else if (muscleClipSize > 0) { m_MuscleClipSize = (uint)muscleClipSize; m_MuscleClip = new ClipMuscleConstant(reader); diff --git a/AssetStudioCLI/Exporter.cs b/AssetStudioCLI/Exporter.cs index b684669..e92e95b 100644 --- a/AssetStudioCLI/Exporter.cs +++ b/AssetStudioCLI/Exporter.cs @@ -322,6 +322,8 @@ namespace AssetStudioCLI return false; var m_AnimationClip = (AnimationClip)item.Asset; var str = m_AnimationClip.Convert(); + if (string.IsNullOrEmpty(str)) + return false; File.WriteAllText(exportFullPath, str); return true; } diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index cd0188a..c4cb9de 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -1292,6 +1292,8 @@ namespace AssetStudioGUI private void PreviewAnimationClip(AnimationClip clip) { var str = clip.Convert(); + if (string.IsNullOrEmpty(str)) + str = "Legacy animation is not supported"; PreviewText(str.Replace("\n", "\r\n")); } diff --git a/AssetStudioGUI/Exporter.cs b/AssetStudioGUI/Exporter.cs index 9d758be..462efb5 100644 --- a/AssetStudioGUI/Exporter.cs +++ b/AssetStudioGUI/Exporter.cs @@ -321,6 +321,8 @@ namespace AssetStudioGUI return false; var m_AnimationClip = (AnimationClip)item.Asset; var str = m_AnimationClip.Convert(); + if (string.IsNullOrEmpty(str)) + return false; File.WriteAllText(exportFullPath, str); return true; } diff --git a/AssetStudioUtility/YAML/AnimationClipExtensions.cs b/AssetStudioUtility/YAML/AnimationClipExtensions.cs index e4976b7..72ae180 100644 --- a/AssetStudioUtility/YAML/AnimationClipExtensions.cs +++ b/AssetStudioUtility/YAML/AnimationClipExtensions.cs @@ -144,6 +144,10 @@ namespace AssetStudio } public static string Convert(this AnimationClip clip) { + if (clip.m_Legacy || clip.m_MuscleClip == null) + { + return string.Empty; + } var converter = AnimationClipConverter.Process(clip); clip.m_RotationCurves = converter.Rotations.Union(clip.m_RotationCurves).ToArray(); clip.m_EulerCurves = converter.Eulers.Union(clip.m_EulerCurves).ToArray();