- [Core] address issue with some AnimationClip.

This commit is contained in:
Razmoth
2023-09-26 00:42:26 +04:00
parent c9c0ec0d8e
commit 27a7de1fe0
5 changed files with 11 additions and 1 deletions

View File

@@ -1690,7 +1690,7 @@ namespace AssetStudio
m_MuscleClipSize = reader.ReadUInt32(); m_MuscleClipSize = reader.ReadUInt32();
m_MuscleClip = ClipMuscleConstant.ParseGI(reader); m_MuscleClip = ClipMuscleConstant.ParseGI(reader);
} }
else else if (muscleClipSize > 0)
{ {
m_MuscleClipSize = (uint)muscleClipSize; m_MuscleClipSize = (uint)muscleClipSize;
m_MuscleClip = new ClipMuscleConstant(reader); m_MuscleClip = new ClipMuscleConstant(reader);

View File

@@ -322,6 +322,8 @@ namespace AssetStudioCLI
return false; return false;
var m_AnimationClip = (AnimationClip)item.Asset; var m_AnimationClip = (AnimationClip)item.Asset;
var str = m_AnimationClip.Convert(); var str = m_AnimationClip.Convert();
if (string.IsNullOrEmpty(str))
return false;
File.WriteAllText(exportFullPath, str); File.WriteAllText(exportFullPath, str);
return true; return true;
} }

View File

@@ -1292,6 +1292,8 @@ namespace AssetStudioGUI
private void PreviewAnimationClip(AnimationClip clip) private void PreviewAnimationClip(AnimationClip clip)
{ {
var str = clip.Convert(); var str = clip.Convert();
if (string.IsNullOrEmpty(str))
str = "Legacy animation is not supported";
PreviewText(str.Replace("\n", "\r\n")); PreviewText(str.Replace("\n", "\r\n"));
} }

View File

@@ -321,6 +321,8 @@ namespace AssetStudioGUI
return false; return false;
var m_AnimationClip = (AnimationClip)item.Asset; var m_AnimationClip = (AnimationClip)item.Asset;
var str = m_AnimationClip.Convert(); var str = m_AnimationClip.Convert();
if (string.IsNullOrEmpty(str))
return false;
File.WriteAllText(exportFullPath, str); File.WriteAllText(exportFullPath, str);
return true; return true;
} }

View File

@@ -144,6 +144,10 @@ namespace AssetStudio
} }
public static string Convert(this AnimationClip clip) public static string Convert(this AnimationClip clip)
{ {
if (clip.m_Legacy || clip.m_MuscleClip == null)
{
return string.Empty;
}
var converter = AnimationClipConverter.Process(clip); var converter = AnimationClipConverter.Process(clip);
clip.m_RotationCurves = converter.Rotations.Union(clip.m_RotationCurves).ToArray(); clip.m_RotationCurves = converter.Rotations.Union(clip.m_RotationCurves).ToArray();
clip.m_EulerCurves = converter.Eulers.Union(clip.m_EulerCurves).ToArray(); clip.m_EulerCurves = converter.Eulers.Union(clip.m_EulerCurves).ToArray();