From cd861558784aa197f8e1e645e70f10053ee4cf79 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Sat, 19 Apr 2025 01:32:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SpineViewPropertyGrid.Designer.cs | 2 +- .../SpineObject/SpineObject21.cs | 2 +- .../SpineObject/SpineObject36.cs | 2 +- .../SpineObject/SpineObject37.cs | 2 +- .../SpineObject/SpineObject38.cs | 2 +- .../SpineObject/SpineObject40.cs | 2 +- .../SpineObject/SpineObject41.cs | 2 +- .../SpineObject/SpineObject42.cs | 2 +- SpineViewer/Spine/SpineObject.cs | 6 ++--- .../Spine/SpineView/SpineAnimationProperty.cs | 14 ++++------- .../Spine/SpineView/SpineObjectProperty.cs | 2 +- .../Spine/SpineView/SpineSlotProperty.cs | 24 ++++++++----------- 12 files changed, 27 insertions(+), 35 deletions(-) diff --git a/SpineViewer/Controls/SpineViewPropertyGrid.Designer.cs b/SpineViewer/Controls/SpineViewPropertyGrid.Designer.cs index 8074406..9467ba2 100644 --- a/SpineViewer/Controls/SpineViewPropertyGrid.Designer.cs +++ b/SpineViewer/Controls/SpineViewPropertyGrid.Designer.cs @@ -194,7 +194,7 @@ tabPage_Slot.Name = "tabPage_Slot"; tabPage_Slot.Size = new Size(364, 370); tabPage_Slot.TabIndex = 6; - tabPage_Slot.Text = "槽位"; + tabPage_Slot.Text = "插槽"; // // propertyGrid_Slot // diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs index adaceed..6644e01 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs @@ -64,7 +64,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject //private SkeletonClipping clipping = new(); /// - /// 所有槽位在所有皮肤中可用的附件集合 + /// 所有插槽在所有皮肤中可用的附件集合 /// private readonly Dictionary> slotAttachments = []; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs index bcbdc37..7ee6830 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs @@ -63,7 +63,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject private readonly SkeletonClipping clipping = new(); /// - /// 所有槽位在所有皮肤中可用的附件集合 + /// 所有插槽在所有皮肤中可用的附件集合 /// private readonly Dictionary> slotAttachments = []; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs index d7e6dbf..457afd7 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs @@ -60,7 +60,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject private readonly SkeletonClipping clipping = new(); /// - /// 所有槽位在所有皮肤中可用的附件集合 + /// 所有插槽在所有皮肤中可用的附件集合 /// private readonly Dictionary> slotAttachments = []; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs index 7bdd895..279bceb 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs @@ -67,7 +67,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject private readonly SkeletonClipping clipping = new(); /// - /// 所有槽位在所有皮肤中可用的附件集合 + /// 所有插槽在所有皮肤中可用的附件集合 /// private readonly Dictionary> slotAttachments = []; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs index 740ca99..eb8078c 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs @@ -62,7 +62,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject private readonly SkeletonClipping clipping = new(); /// - /// 所有槽位在所有皮肤中可用的附件集合 + /// 所有插槽在所有皮肤中可用的附件集合 /// private readonly Dictionary> slotAttachments = []; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs index ff10359..f4f5365 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs @@ -62,7 +62,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject private readonly SkeletonClipping clipping = new(); /// - /// 所有槽位在所有皮肤中可用的附件集合 + /// 所有插槽在所有皮肤中可用的附件集合 /// private readonly Dictionary> slotAttachments = []; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs index 06f3e7a..46cab74 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs @@ -62,7 +62,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject private readonly SkeletonClipping clipping = new(); /// - /// 所有槽位在所有皮肤中可用的附件集合 + /// 所有插槽在所有皮肤中可用的附件集合 /// private readonly Dictionary> slotAttachments = []; diff --git a/SpineViewer/Spine/SpineObject.cs b/SpineViewer/Spine/SpineObject.cs index 4b670cc..135e9f0 100644 --- a/SpineViewer/Spine/SpineObject.cs +++ b/SpineViewer/Spine/SpineObject.cs @@ -325,7 +325,7 @@ namespace SpineViewer.Spine protected bool debugClippings = false; /// - /// 所有槽位下可用的附件名 + /// 所有插槽下可用的附件名 /// public FrozenDictionary> SlotAttachmentNames { get; protected set; } @@ -340,13 +340,13 @@ namespace SpineViewer.Spine public ImmutableArray AnimationNames { get; protected set; } /// - /// 获取某个槽位当前加载的附件 + /// 获取某个插槽当前加载的附件 /// public string GetSlotAttachment(string slot) { lock (_lock) return getSlotAttachment(slot); } protected abstract string getSlotAttachment(string slot); /// - /// 设置某个槽位当前加载的附件 + /// 设置某个插槽当前加载的附件 /// public void SetSlotAttachment(string slot, string name) { lock (_lock) setSlotAttachment(slot, name); } protected abstract void setSlotAttachment(string slot, string name); diff --git a/SpineViewer/Spine/SpineView/SpineAnimationProperty.cs b/SpineViewer/Spine/SpineView/SpineAnimationProperty.cs index 2891e55..50dc67d 100644 --- a/SpineViewer/Spine/SpineView/SpineAnimationProperty.cs +++ b/SpineViewer/Spine/SpineView/SpineAnimationProperty.cs @@ -186,16 +186,12 @@ namespace SpineViewer.Spine.SpineView { return new StandardValuesCollection(tracks.Spine.AnimationNames); } - else if (context?.Instance is SpineAnimationProperty[] animTracks) + else if (context?.Instance is object[] instances) { - // XXX: 莫名其妙好了, 不是 object[] 类型是具体的类型了 - if (animTracks.Length > 0) - { - IEnumerable common = animTracks[0].Spine.AnimationNames; - foreach (var t in animTracks.Skip(1)) - common = common.Union(t.Spine.AnimationNames); - return new StandardValuesCollection(common.ToArray()); - } + IEnumerable common = []; + foreach (SpineAnimationProperty prop in instances.Where(inst => inst is SpineAnimationProperty)) + common = common.Union(prop.Spine.AnimationNames); + return new StandardValuesCollection(common.ToArray()); } return base.GetStandardValues(context); } diff --git a/SpineViewer/Spine/SpineView/SpineObjectProperty.cs b/SpineViewer/Spine/SpineView/SpineObjectProperty.cs index 767985a..f08f2db 100644 --- a/SpineViewer/Spine/SpineView/SpineObjectProperty.cs +++ b/SpineViewer/Spine/SpineView/SpineObjectProperty.cs @@ -28,7 +28,7 @@ namespace SpineViewer.Spine.SpineView public SpineSkinProperty Skin { get; } = new(spine); [TypeConverter(typeof(ExpandableObjectConverter))] - [DisplayName("皮肤")] + [DisplayName("插槽")] public SpineSlotProperty Slot { get; } = new(spine); [TypeConverter(typeof(ExpandableObjectConverter))] diff --git a/SpineViewer/Spine/SpineView/SpineSlotProperty.cs b/SpineViewer/Spine/SpineView/SpineSlotProperty.cs index 8cd79bb..7348b3a 100644 --- a/SpineViewer/Spine/SpineView/SpineSlotProperty.cs +++ b/SpineViewer/Spine/SpineView/SpineSlotProperty.cs @@ -10,7 +10,7 @@ using System.Threading.Tasks; namespace SpineViewer.Spine.SpineView { /// - /// 用于在 PropertyGrid 上显示槽位附件加载情况包装类 + /// 用于在 PropertyGrid 上显示插槽附件加载情况包装类 /// public class SpineSlotProperty(SpineObject spine) : ICustomTypeDescriptor { @@ -18,7 +18,7 @@ namespace SpineViewer.Spine.SpineView public SpineObject Spine { get; } = spine; /// - /// 显示所有槽位集合 + /// 显示所有插槽集合 /// public override string ToString() => $"[{string.Join(", ", Spine.SlotAttachmentNames.Keys)}]"; @@ -56,14 +56,14 @@ namespace SpineViewer.Spine.SpineView foreach (var slotName in Spine.SlotAttachmentNames.Keys) { if (!pdCache.TryGetValue(slotName, out var pd)) - pdCache[slotName] = pd =new SlotPropertyDescriptor(slotName, [new DisplayNameAttribute($"{slotName}")]); + pdCache[slotName] = pd = new SlotPropertyDescriptor(slotName, [new DisplayNameAttribute($"{slotName}")]); props.Add(pd); } return props; } /// - /// 槽位属性描述符, 实现对属性的读取和赋值 + /// 插槽属性描述符, 实现对属性的读取和赋值 /// internal class SlotPropertyDescriptor(string name, Attribute[]? attributes) : PropertyDescriptor(name, attributes) { @@ -153,19 +153,15 @@ namespace SpineViewer.Spine.SpineView if (slots.Spine.SlotAttachmentNames.TryGetValue(pd.Name, out var names)) return new StandardValuesCollection(names); } - else if (context?.Instance is SpineSlotProperty[] spinesSlots) + else if (context?.Instance is object[] instances) { - // XXX: 莫名其妙好了, 不是 object[] 类型是具体的类型了 - if (spinesSlots.Length > 0) + IEnumerable common = []; + foreach (SpineSlotProperty prop in instances.Where(inst => inst is SpineSlotProperty)) { - IEnumerable common = []; - foreach (var t in spinesSlots) - { - if (t.Spine.SlotAttachmentNames.TryGetValue(pd.Name, out var names)) - common = common.Union(names); - } - return new StandardValuesCollection(common.ToArray()); + if (prop.Spine.SlotAttachmentNames.TryGetValue(pd.Name, out var names)) + common = common.Union(names); } + return new StandardValuesCollection(common.ToArray()); } } return base.GetStandardValues(context);