From 027d3af6194b5531d48dc9d3824fd1666e9a1485 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Sat, 19 Apr 2025 12:05:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0default=E7=9A=AE=E8=82=A4?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spine/Implementations/SpineObject/SpineObject21.cs | 5 +++-- .../Spine/Implementations/SpineObject/SpineObject36.cs | 5 +++-- .../Spine/Implementations/SpineObject/SpineObject37.cs | 5 +++-- .../Spine/Implementations/SpineObject/SpineObject38.cs | 5 +++-- .../Spine/Implementations/SpineObject/SpineObject40.cs | 5 +++-- .../Spine/Implementations/SpineObject/SpineObject41.cs | 5 +++-- .../Spine/Implementations/SpineObject/SpineObject42.cs | 5 +++-- SpineViewer/Spine/SpineObject.cs | 6 +++--- SpineViewer/Spine/SpineView/SpineSkinProperty.cs | 2 +- 9 files changed, 25 insertions(+), 18 deletions(-) diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs index 6644e01..d5e3a5c 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs @@ -105,7 +105,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject } } SlotAttachmentNames = slotAttachments.ToFrozenDictionary(item => item.Key, item => item.Value.Keys.ToImmutableArray()); - SkinNames = skeletonData.Skins.Select(v => v.Name).Where(v => v != "default").ToImmutableArray(); + SkinNames = skeletonData.Skins.Select(v => v.Name).ToImmutableArray(); AnimationNames = [EMPTY_ANIMATION, .. skeletonData.Animations.Select(v => v.Name)]; skeleton = new Skeleton(skeletonData) { Skin = new(Guid.NewGuid().ToString()) }; // 挂载一个空皮肤当作容器 @@ -199,7 +199,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void addSkin(string name) { - if (skeletonData.FindSkin(name) is Skin sk) + // default 不需要加载 + if (name != "default" && skeletonData.FindSkin(name) is Skin sk) { // XXX: 3.7 及以下不支持 AddSkin foreach (var (k, v) in sk.Attachments) diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs index 7ee6830..293d67d 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs @@ -104,7 +104,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject } } SlotAttachmentNames = slotAttachments.ToFrozenDictionary(item => item.Key, item => item.Value.Keys.ToImmutableArray()); - SkinNames = skeletonData.Skins.Select(v => v.Name).Where(v => v != "default").ToImmutableArray(); + SkinNames = skeletonData.Skins.Select(v => v.Name).ToImmutableArray(); AnimationNames = [EMPTY_ANIMATION, .. skeletonData.Animations.Select(v => v.Name)]; skeleton = new Skeleton(skeletonData) { Skin = new(Guid.NewGuid().ToString()) }; // 挂载一个空皮肤当作容器 @@ -198,7 +198,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void addSkin(string name) { - if (skeletonData.FindSkin(name) is Skin sk) + // default 不需要加载 + if (name != "default" && skeletonData.FindSkin(name) is Skin sk) { // XXX: 3.7 及以下不支持 AddSkin foreach (var (k, v) in sk.Attachments) diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs index 457afd7..74231de 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs @@ -101,7 +101,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject } } SlotAttachmentNames = slotAttachments.ToFrozenDictionary(item => item.Key, item => item.Value.Keys.ToImmutableArray()); - SkinNames = skeletonData.Skins.Select(v => v.Name).Where(v => v != "default").ToImmutableArray(); + SkinNames = skeletonData.Skins.Select(v => v.Name).ToImmutableArray(); AnimationNames = [EMPTY_ANIMATION, .. skeletonData.Animations.Select(v => v.Name)]; skeleton = new Skeleton(skeletonData) { Skin = new(Guid.NewGuid().ToString()) }; // 挂载一个空皮肤当作容器 @@ -169,7 +169,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void addSkin(string name) { - if (skeletonData.FindSkin(name) is Skin sk) + // default 不需要加载 + if (name != "default" && skeletonData.FindSkin(name) is Skin sk) { // XXX: 3.7 及以下不支持 AddSkin foreach (var (k, v) in sk.Attachments) diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs index 279bceb..d67f959 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs @@ -108,7 +108,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject } } SlotAttachmentNames = slotAttachments.ToFrozenDictionary(item => item.Key, item => item.Value.Keys.ToImmutableArray()); - SkinNames = skeletonData.Skins.Select(v => v.Name).Where(v => v != "default").ToImmutableArray(); + SkinNames = skeletonData.Skins.Select(v => v.Name).ToImmutableArray(); AnimationNames = [EMPTY_ANIMATION, .. skeletonData.Animations.Select(v => v.Name)]; skeleton = new Skeleton(skeletonData) { Skin = new(Guid.NewGuid().ToString()) }; // 挂载一个空皮肤当作容器 @@ -176,7 +176,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void addSkin(string name) { - if (skeletonData.FindSkin(name) is Skin sk) + // default 不需要加载 + if (name != "default" && skeletonData.FindSkin(name) is Skin sk) { skeleton.Skin.AddSkin(sk); skeleton.SetSlotsToSetupPose(); diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs index eb8078c..012fc22 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs @@ -104,7 +104,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject } } SlotAttachmentNames = slotAttachments.ToFrozenDictionary(item => item.Key, item => item.Value.Keys.ToImmutableArray()); - SkinNames = skeletonData.Skins.Select(v => v.Name).Where(v => v != "default").ToImmutableArray(); + SkinNames = skeletonData.Skins.Select(v => v.Name).ToImmutableArray(); AnimationNames = [EMPTY_ANIMATION, .. skeletonData.Animations.Select(v => v.Name)]; skeleton = new Skeleton(skeletonData) { Skin = new(Guid.NewGuid().ToString()) }; // 挂载一个空皮肤当作容器 @@ -172,7 +172,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void addSkin(string name) { - if (skeletonData.FindSkin(name) is Skin sk) + // default 不需要加载 + if (name != "default" && skeletonData.FindSkin(name) is Skin sk) { skeleton.Skin.AddSkin(sk); skeleton.SetSlotsToSetupPose(); diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs index f4f5365..7e0be0f 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs @@ -104,7 +104,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject } } SlotAttachmentNames = slotAttachments.ToFrozenDictionary(item => item.Key, item => item.Value.Keys.ToImmutableArray()); - SkinNames = skeletonData.Skins.Select(v => v.Name).Where(v => v != "default").ToImmutableArray(); + SkinNames = skeletonData.Skins.Select(v => v.Name).ToImmutableArray(); AnimationNames = [EMPTY_ANIMATION, .. skeletonData.Animations.Select(v => v.Name)]; skeleton = new Skeleton(skeletonData) { Skin = new(Guid.NewGuid().ToString()) }; // 挂载一个空皮肤当作容器 @@ -172,7 +172,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void addSkin(string name) { - if (skeletonData.FindSkin(name) is Skin sk) + // default 不需要加载 + if (name != "default" && skeletonData.FindSkin(name) is Skin sk) { skeleton.Skin.AddSkin(sk); skeleton.SetSlotsToSetupPose(); diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs index 46cab74..0b6606f 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs @@ -104,7 +104,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject } } SlotAttachmentNames = slotAttachments.ToFrozenDictionary(item => item.Key, item => item.Value.Keys.ToImmutableArray()); - SkinNames = skeletonData.Skins.Select(v => v.Name).Where(v => v != "default").ToImmutableArray(); + SkinNames = skeletonData.Skins.Select(v => v.Name).ToImmutableArray(); AnimationNames = [EMPTY_ANIMATION, .. skeletonData.Animations.Select(v => v.Name)]; skeleton = new Skeleton(skeletonData) { Skin = new(Guid.NewGuid().ToString()) }; // 挂载一个空皮肤当作容器 @@ -172,7 +172,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void addSkin(string name) { - if (skeletonData.FindSkin(name) is Skin sk) + // default 不需要加载 + if (name != "default" && skeletonData.FindSkin(name) is Skin sk) { skeleton.Skin.AddSkin(sk); skeleton.SetSlotsToSetupPose(); diff --git a/SpineViewer/Spine/SpineObject.cs b/SpineViewer/Spine/SpineObject.cs index 135e9f0..a10ba79 100644 --- a/SpineViewer/Spine/SpineObject.cs +++ b/SpineViewer/Spine/SpineObject.cs @@ -93,8 +93,8 @@ namespace SpineViewer.Spine tex.Display(); Preview = tex.Texture.CopyToBitmap(); - // 初始化皮肤加载情况 - foreach (var n in SkinNames) skinLoadStatus[n] = false; + // 初始化皮肤加载情况, 不需要记录 default + foreach (var n in SkinNames.Where(v => v != "default")) skinLoadStatus[n] = false; // 默认初始化10个动画空位 for (int i = 0; i < 10; i++) setAnimation(i, AnimationNames.First()); @@ -359,7 +359,7 @@ namespace SpineViewer.Spine /// /// 查询皮肤加载状态, 皮肤不存在时返回 false /// - public bool GetSkinStatus(string name) { lock (_lock) return skinLoadStatus.TryGetValue(name, out var status) && status; } + public bool GetSkinStatus(string name) { lock (_lock) return name == "default" || skinLoadStatus.TryGetValue(name, out var status) && status; } /// /// 设置皮肤加载状态, 忽略不存在的皮肤 diff --git a/SpineViewer/Spine/SpineView/SpineSkinProperty.cs b/SpineViewer/Spine/SpineView/SpineSkinProperty.cs index 93c3f60..69661fa 100644 --- a/SpineViewer/Spine/SpineView/SpineSkinProperty.cs +++ b/SpineViewer/Spine/SpineView/SpineSkinProperty.cs @@ -66,7 +66,7 @@ namespace SpineViewer.Spine.SpineView private class SkinPropertyDescriptor(string name, Attribute[]? attributes) : PropertyDescriptor(name, attributes) { public override Type ComponentType => typeof(SpineSkinProperty); - public override bool IsReadOnly => false; + public override bool IsReadOnly => Name == "default"; public override Type PropertyType => typeof(bool); public override bool CanResetValue(object component) => false; public override void ResetValue(object component) { }