From 153d3603d2a187c0e38cd5c891760e1bec9ce8cc Mon Sep 17 00:00:00 2001 From: ww-rm Date: Sat, 5 Apr 2025 09:40:02 +0800 Subject: [PATCH] optimize --- .../Spine/Implementations/Spine/Spine21.cs | 5 +-- .../Spine/Implementations/Spine/Spine36.cs | 5 +-- .../Spine/Implementations/Spine/Spine38.cs | 8 ++-- .../Spine/Implementations/Spine/Spine40.cs | 8 ++-- .../Spine/Implementations/Spine/Spine41.cs | 8 ++-- .../Spine/Implementations/Spine/Spine42.cs | 8 ++-- SpineViewer/Spine/Spine.cs | 45 +++++++------------ 7 files changed, 41 insertions(+), 46 deletions(-) diff --git a/SpineViewer/Spine/Implementations/Spine/Spine21.cs b/SpineViewer/Spine/Implementations/Spine/Spine21.cs index 09be4be..4811778 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine21.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine21.cs @@ -111,15 +111,14 @@ namespace SpineViewer.Spine.Implementations.Spine var fY = flipY; var animations = animationState.Tracks.Where(te => te is not null).Select(te => te.Animation.Name).ToArray(); - var val = Math.Max(value, SCALE_MIN); if (skeletonBinary is not null) { - skeletonBinary.Scale = val; + skeletonBinary.Scale = value; skeletonData = skeletonBinary.ReadSkeletonData(SkelPath); } else if (skeletonJson is not null) { - skeletonJson.Scale = val; + skeletonJson.Scale = value; skeletonData = skeletonJson.ReadSkeletonData(SkelPath); } diff --git a/SpineViewer/Spine/Implementations/Spine/Spine36.cs b/SpineViewer/Spine/Implementations/Spine/Spine36.cs index cc2cbe2..7382e9a 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine36.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine36.cs @@ -110,15 +110,14 @@ namespace SpineViewer.Spine.Implementations.Spine var fY = flipY; var animations = animationState.Tracks.Where(te => te is not null).Select(te => te.Animation.Name).ToArray(); - var val = Math.Max(value, SCALE_MIN); if (skeletonBinary is not null) { - skeletonBinary.Scale = val; + skeletonBinary.Scale = value; skeletonData = skeletonBinary.ReadSkeletonData(SkelPath); } else if (skeletonJson is not null) { - skeletonJson.Scale = val; + skeletonJson.Scale = value; skeletonData = skeletonJson.ReadSkeletonData(SkelPath); } diff --git a/SpineViewer/Spine/Implementations/Spine/Spine38.cs b/SpineViewer/Spine/Implementations/Spine/Spine38.cs index feb136a..bcb923f 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine38.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine38.cs @@ -137,9 +137,11 @@ namespace SpineViewer.Spine.Implementations.Spine protected override void addSkin(string name) { - if (!skinNames.Contains(name)) return; - skeleton.Skin.AddSkin(skeletonData.FindSkin(name)); - skeleton.SetSlotsToSetupPose(); + if (skeletonData.FindSkin(name) is Skin sk) + { + skeleton.Skin.AddSkin(sk); + skeleton.SetSlotsToSetupPose(); + } } protected override void clearSkin() diff --git a/SpineViewer/Spine/Implementations/Spine/Spine40.cs b/SpineViewer/Spine/Implementations/Spine/Spine40.cs index 4a7ea42..f137e8f 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine40.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine40.cs @@ -133,9 +133,11 @@ namespace SpineViewer.Spine.Implementations.Spine protected override void addSkin(string name) { - if (!skinNames.Contains(name)) return; - skeleton.Skin.AddSkin(skeletonData.FindSkin(name)); - skeleton.SetSlotsToSetupPose(); + if (skeletonData.FindSkin(name) is Skin sk) + { + skeleton.Skin.AddSkin(sk); + skeleton.SetSlotsToSetupPose(); + } } protected override void clearSkin() diff --git a/SpineViewer/Spine/Implementations/Spine/Spine41.cs b/SpineViewer/Spine/Implementations/Spine/Spine41.cs index c153110..1962e7a 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine41.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine41.cs @@ -133,9 +133,11 @@ namespace SpineViewer.Spine.Implementations.Spine protected override void addSkin(string name) { - if (!skinNames.Contains(name)) return; - skeleton.Skin.AddSkin(skeletonData.FindSkin(name)); - skeleton.SetSlotsToSetupPose(); + if (skeletonData.FindSkin(name) is Skin sk) + { + skeleton.Skin.AddSkin(sk); + skeleton.SetSlotsToSetupPose(); + } } protected override void clearSkin() diff --git a/SpineViewer/Spine/Implementations/Spine/Spine42.cs b/SpineViewer/Spine/Implementations/Spine/Spine42.cs index 8225de0..64c1e46 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine42.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine42.cs @@ -133,9 +133,11 @@ namespace SpineViewer.Spine.Implementations.Spine protected override void addSkin(string name) { - if (!skinNames.Contains(name)) return; - skeleton.Skin.AddSkin(skeletonData.FindSkin(name)); - skeleton.SetSlotsToSetupPose(); + if (skeletonData.FindSkin(name) is Skin sk) + { + skeleton.Skin.AddSkin(sk); + skeleton.SetSlotsToSetupPose(); + } } protected override void clearSkin() diff --git a/SpineViewer/Spine/Spine.cs b/SpineViewer/Spine/Spine.cs index b2eee34..e72d863 100644 --- a/SpineViewer/Spine/Spine.cs +++ b/SpineViewer/Spine/Spine.cs @@ -30,11 +30,6 @@ namespace SpineViewer.Spine /// protected const uint PREVIEW_HEIGHT = 256; - /// - /// 缩放最小值 - /// - protected const float SCALE_MIN = 0.001f; - /// /// 创建特定版本的 Spine /// @@ -174,7 +169,7 @@ namespace SpineViewer.Spine public float Scale { get { lock (_lock) return scale; } - set { lock (_lock) { scale = value; update(0); } } + set { lock (_lock) { scale = Math.Max(value, 0.001f); update(0); } } } protected abstract float scale { get; set; } @@ -261,24 +256,22 @@ namespace SpineViewer.Spine /// public string[] GetLoadedSkins() { lock (_lock) return loadedSkins.ToArray(); } protected readonly List loadedSkins = []; - + /// /// 加载指定皮肤, 添加至列表末尾, 如果不存在则忽略, 允许加载重复的值 /// - public void LoadSkin(string name) + public void LoadSkin(string name) { + if (!skinNames.Contains(name)) return; lock (_lock) { - if (skinNames.Contains(name)) - { - loadedSkins.Add(name); - reloadSkins(); + loadedSkins.Add(name); + reloadSkins(); - if (!skinLoggerWarned && Version <= SpineVersion.V37 && loadedSkins.Count > 1) - { - logger.Warn($"Multiplt skins not supported in SpineVersion {Version.GetName()}"); - skinLoggerWarned = true; - } + if (!skinLoggerWarned && Version <= SpineVersion.V37 && loadedSkins.Count > 1) + { + logger.Warn($"Multiplt skins not supported in SpineVersion {Version.GetName()}"); + skinLoggerWarned = true; } } } @@ -288,13 +281,11 @@ namespace SpineViewer.Spine /// public void UnloadSkin(int idx) { + if (idx < 0 || idx >= loadedSkins.Count) return; lock (_lock) { - if (idx >= 0 && idx < loadedSkins.Count) - { - loadedSkins.RemoveAt(idx); - reloadSkins(); - } + loadedSkins.RemoveAt(idx); + reloadSkins(); } } @@ -303,13 +294,11 @@ namespace SpineViewer.Spine /// public void ReplaceSkin(int idx, string name) { + if (idx < 0 || idx >= loadedSkins.Count || !skinNames.Contains(name)) return; lock (_lock) { - if (idx >= 0 && idx < loadedSkins.Count && skinNames.Contains(name)) - { - loadedSkins[idx] = name; - reloadSkins(); - } + loadedSkins[idx] = name; + reloadSkins(); } } @@ -325,7 +314,7 @@ namespace SpineViewer.Spine } /// - /// 加载皮肤, 之后需要使用 来复位 + /// 加载皮肤, 如果不存在则忽略 /// protected abstract void addSkin(string name);