From 13af269adbdf3d32dec2fe5d79981877840a4e1a Mon Sep 17 00:00:00 2001 From: KillzXGaming Date: Mon, 19 Jun 2023 17:52:55 -0400 Subject: [PATCH] Fix animations with zero frame count saving with no animation data --- Switch_Toolbox_Library/FileFormats/Animation/ANIM.cs | 8 +++++--- Switch_Toolbox_Library/FileFormats/Animation/SEANIM.cs | 3 ++- Switch_Toolbox_Library/FileFormats/Animation/SMD.cs | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Switch_Toolbox_Library/FileFormats/Animation/ANIM.cs b/Switch_Toolbox_Library/FileFormats/Animation/ANIM.cs index 4369d7df..742d6ceb 100644 --- a/Switch_Toolbox_Library/FileFormats/Animation/ANIM.cs +++ b/Switch_Toolbox_Library/FileFormats/Animation/ANIM.cs @@ -213,6 +213,8 @@ namespace Toolbox.Library.Animations using (System.IO.StreamWriter file = new System.IO.StreamWriter(@fname)) { + float frameCount = Math.Max(1, a.FrameCount); + AnimHeader header = new AnimHeader(); file.WriteLine("animVersion " + header.animVersion + ";"); file.WriteLine("mayaVersion " + header.mayaVersion + ";"); @@ -220,10 +222,10 @@ namespace Toolbox.Library.Animations file.WriteLine("linearUnit " + header.linearUnit + ";"); file.WriteLine("angularUnit " + header.angularUnit + ";"); file.WriteLine("startTime " + 1 + ";"); - file.WriteLine("endTime " + a.FrameCount + ";"); + file.WriteLine("endTime " + frameCount + ";"); - a.SetFrame(a.FrameCount - 1); //from last frame - for (int li = 0; li < a.FrameCount; ++li) //go through each frame with nextFrame + a.SetFrame(frameCount - 1); //from last frame + for (int li = 0; li < frameCount; ++li) //go through each frame with nextFrame a.NextFrame(vbn, false, true); a.NextFrame(vbn, false, true); //go on first frame diff --git a/Switch_Toolbox_Library/FileFormats/Animation/SEANIM.cs b/Switch_Toolbox_Library/FileFormats/Animation/SEANIM.cs index 8d54d02e..98a7b8ab 100644 --- a/Switch_Toolbox_Library/FileFormats/Animation/SEANIM.cs +++ b/Switch_Toolbox_Library/FileFormats/Animation/SEANIM.cs @@ -1,6 +1,7 @@ using SELib; using OpenTK; using System.Linq; +using System; namespace Toolbox.Library.Animations { @@ -176,7 +177,7 @@ namespace Toolbox.Library.Animations seAnim.AnimType = AnimationType.Absolute; anim.SetFrame(0); - for (int frame = 0; frame < anim.FrameCount; frame++) + for (int frame = 0; frame < Math.Max(1, anim.FrameCount); frame++) { anim.SetFrame(frame); anim.NextFrame(); diff --git a/Switch_Toolbox_Library/FileFormats/Animation/SMD.cs b/Switch_Toolbox_Library/FileFormats/Animation/SMD.cs index 8e8ad860..c2ed987d 100644 --- a/Switch_Toolbox_Library/FileFormats/Animation/SMD.cs +++ b/Switch_Toolbox_Library/FileFormats/Animation/SMD.cs @@ -305,7 +305,7 @@ namespace Toolbox.Library.Animations file.WriteLine("skeleton"); anim.SetFrame(0); - for (int i = 0; i <= anim.FrameCount; i++) + for (int i = 0; i <= Math.Max(1, anim.FrameCount); i++) { anim.SetFrame(i); anim.NextFrame();