From dd504d32caa79f4a54defd1cbab0cd36ffccee82 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Tue, 30 Sep 2025 14:47:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D3.4=E7=9A=84=E9=99=84?= =?UTF-8?q?=E4=BB=B6=E6=AE=8B=E7=95=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spine/SpineObject.cs | 1 + SpineViewer/Extensions/SpineObjectExtension.cs | 6 ++++++ SpineViewer/Models/SpineObjectModel.cs | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/Spine/SpineObject.cs b/Spine/SpineObject.cs index 7cfda72..1baff8e 100644 --- a/Spine/SpineObject.cs +++ b/Spine/SpineObject.cs @@ -181,6 +181,7 @@ namespace Spine _skinLoadStatus = other._skinLoadStatus.ToDictionary(); ReloadSkins(); + // XXX(#105): 部分 3.4 模型此处可能导致预期外的插槽附件残留 // 拷贝插槽属性值 for (int i = 0; i < other._skeleton.Slots.Length; i++) { diff --git a/SpineViewer/Extensions/SpineObjectExtension.cs b/SpineViewer/Extensions/SpineObjectExtension.cs index 0ee0602..9d8d703 100644 --- a/SpineViewer/Extensions/SpineObjectExtension.cs +++ b/SpineViewer/Extensions/SpineObjectExtension.cs @@ -27,6 +27,12 @@ namespace SpineViewer.Extensions t.TrackTime = tr.TrackTime; } + // XXX(#105): 部分 3.4.02 版本模型在设置动画后出现附件残留, 因此强制进行一次 Setup + if (spineObject.Version == SpineVersion.V34) + { + spineObject.Skeleton.SetSlotsToSetupPose(); + } + spineObject.Update(0); return spineObject; } diff --git a/SpineViewer/Models/SpineObjectModel.cs b/SpineViewer/Models/SpineObjectModel.cs index 3811ff5..1612b96 100644 --- a/SpineViewer/Models/SpineObjectModel.cs +++ b/SpineViewer/Models/SpineObjectModel.cs @@ -531,6 +531,12 @@ namespace SpineViewer.Models trackIndex++; } + // XXX(#105): 部分 3.4.02 版本模型在设置动画后出现附件残留, 因此强制进行一次 Setup + if (_spineObject.Version == SpineVersion.V34) + { + _spineObject.Skeleton.SetSlotsToSetupPose(); + } + SetProperty(_spineObject.DebugTexture, value.DebugTexture, v => _spineObject.DebugTexture = v, nameof(DebugTexture)); SetProperty(_spineObject.DebugBounds, value.DebugBounds, v => _spineObject.DebugBounds = v, nameof(DebugBounds)); SetProperty(_spineObject.DebugBones, value.DebugBones, v => _spineObject.DebugBones = v, nameof(DebugBones)); From 1d8e2efdffacfe8f725e32cf247c05b6507816a1 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Tue, 30 Sep 2025 22:14:07 +0800 Subject: [PATCH 2/2] update to v0.16.1 --- Spine/Spine.csproj | 2 +- SpineViewer/SpineViewer.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Spine/Spine.csproj b/Spine/Spine.csproj index 76993e6..d7ec78a 100644 --- a/Spine/Spine.csproj +++ b/Spine/Spine.csproj @@ -7,7 +7,7 @@ net8.0-windows $(SolutionDir)out false - 0.16.0 + 0.16.1 diff --git a/SpineViewer/SpineViewer.csproj b/SpineViewer/SpineViewer.csproj index f0c6462..4e82855 100644 --- a/SpineViewer/SpineViewer.csproj +++ b/SpineViewer/SpineViewer.csproj @@ -7,7 +7,7 @@ net8.0-windows $(SolutionDir)out false - 0.16.0 + 0.16.1 WinExe true