From b6f9cd0c7c92335ea8a58c3d62a58c471421ebd0 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Fri, 11 Apr 2025 00:07:09 +0800 Subject: [PATCH] small change --- SpineViewer/Controls/SpineListView.cs | 10 ++++---- SpineViewer/Controls/SpinePreviewer.cs | 2 +- SpineViewer/Controls/SpinePropertyGrid.cs | 2 +- SpineViewer/Dialogs/AboutDialog.cs | 2 +- SpineViewer/Dialogs/BatchOpenSpineDialog.cs | 4 ++-- .../Dialogs/ConvertFileFormatDialog.cs | 2 +- SpineViewer/Dialogs/DiagnosticsDialog.cs | 2 +- SpineViewer/Dialogs/ExportDialog.cs | 2 +- SpineViewer/Dialogs/OpenSpineDialog.cs | 4 ++-- SpineViewer/Dialogs/ProgressDialog.cs | 2 +- SpineViewer/Exporter/Exporter.cs | 12 +++++----- SpineViewer/Exporter/FFmpegVideoExporter.cs | 4 ++-- SpineViewer/Exporter/FrameExporter.cs | 4 ++-- SpineViewer/Exporter/FrameSequenceExporter.cs | 4 ++-- SpineViewer/Exporter/VideoExporter.cs | 6 ++--- SpineViewer/Forms/SpineViewerForm.cs | 2 +- SpineViewer/Program.cs | 2 +- .../Spine/SpineAnimationWrapper.cs | 8 +++---- .../Spine/SpineBaseInfoWrapper.cs | 4 ++-- .../Spine/SpineDebugWrapper.cs | 5 ++-- .../Spine/SpineRenderWrapper.cs | 5 ++-- .../Spine/SpineSkinWrapper.cs | 8 +++---- .../Spine/SpineTransformWrapper.cs | 5 ++-- .../Spine/SpineWrapper.cs | 5 ++-- .../PropertyGridWrappers/TypeConverter.cs | 8 +++---- .../SpineObject21.cs} | 6 ++--- .../SpineObject36.cs} | 6 ++--- .../SpineObject37.cs} | 6 ++--- .../SpineObject38.cs} | 6 ++--- .../SpineObject40.cs} | 6 ++--- .../SpineObject41.cs} | 6 ++--- .../Spineobject42.cs} | 6 ++--- SpineViewer/Spine/SkeletonConverter.cs | 2 +- SpineViewer/Spine/SpineHelper.cs | 2 +- .../Spine/{Spine.cs => SpineObject.cs} | 23 +++++++++++-------- .../ImplementationResolver.cs | 2 +- .../{Utilities => Utils}/MessagePopup.cs | 2 +- .../{Utilities => Utils}/SFMLBlendMode.cs | 2 +- .../{Utilities => Utils}/SFMLShader.cs | 2 +- 39 files changed, 99 insertions(+), 92 deletions(-) rename SpineViewer/Spine/Implementations/{Spine/Spine21.cs => SpineObject/SpineObject21.cs} (98%) rename SpineViewer/Spine/Implementations/{Spine/Spine36.cs => SpineObject/SpineObject36.cs} (98%) rename SpineViewer/Spine/Implementations/{Spine/Spine37.cs => SpineObject/SpineObject37.cs} (98%) rename SpineViewer/Spine/Implementations/{Spine/Spine38.cs => SpineObject/SpineObject38.cs} (98%) rename SpineViewer/Spine/Implementations/{Spine/Spine40.cs => SpineObject/SpineObject40.cs} (98%) rename SpineViewer/Spine/Implementations/{Spine/Spine41.cs => SpineObject/SpineObject41.cs} (98%) rename SpineViewer/Spine/Implementations/{Spine/Spine42.cs => SpineObject/Spineobject42.cs} (98%) rename SpineViewer/Spine/{Spine.cs => SpineObject.cs} (94%) rename SpineViewer/{Utilities => Utils}/ImplementationResolver.cs (98%) rename SpineViewer/{Utilities => Utils}/MessagePopup.cs (97%) rename SpineViewer/{Utilities => Utils}/SFMLBlendMode.cs (99%) rename SpineViewer/{Utilities => Utils}/SFMLShader.cs (98%) diff --git a/SpineViewer/Controls/SpineListView.cs b/SpineViewer/Controls/SpineListView.cs index 5b0452a..bb2ee10 100644 --- a/SpineViewer/Controls/SpineListView.cs +++ b/SpineViewer/Controls/SpineListView.cs @@ -15,7 +15,7 @@ using System.Collections.Specialized; using NLog; using SpineViewer.Extensions; using SpineViewer.PropertyGridWrappers.Spine; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Controls { @@ -29,12 +29,12 @@ namespace SpineViewer.Controls /// /// Spine 列表只读视图, 访问时必须使用 lock 语句锁定视图本身 /// - public readonly ReadOnlyCollection Spines; + public readonly ReadOnlyCollection Spines; /// /// Spine 列表, 访问时必须使用 lock 语句锁定只读视图 Spines /// - private readonly List spines = []; + private readonly List spines = []; /// /// 用于属性页显示模型参数的包装类 @@ -80,7 +80,7 @@ namespace SpineViewer.Controls { try { - var spine = Spine.Spine.New(result.Version, result.SkelPath, result.AtlasPath); + var spine = Spine.SpineObject.New(result.Version, result.SkelPath, result.AtlasPath); // 如果索引无效则在末尾添加 if (index < 0 || index > listView.Items.Count) @@ -155,7 +155,7 @@ namespace SpineViewer.Controls try { - var spine = Spine.Spine.New(version, skelPath); + var spine = Spine.SpineObject.New(version, skelPath); var preview = spine.Preview; lock (Spines) { spines.Add(spine); } spinePropertyWrappers[spine.ID] = new(spine); diff --git a/SpineViewer/Controls/SpinePreviewer.cs b/SpineViewer/Controls/SpinePreviewer.cs index 014315c..cce1102 100644 --- a/SpineViewer/Controls/SpinePreviewer.cs +++ b/SpineViewer/Controls/SpinePreviewer.cs @@ -10,7 +10,7 @@ using System.Windows.Forms; using System.Security.Policy; using System.Diagnostics; using NLog; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Controls { diff --git a/SpineViewer/Controls/SpinePropertyGrid.cs b/SpineViewer/Controls/SpinePropertyGrid.cs index 708198d..3bb5d4b 100644 --- a/SpineViewer/Controls/SpinePropertyGrid.cs +++ b/SpineViewer/Controls/SpinePropertyGrid.cs @@ -8,7 +8,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using SpineViewer.PropertyGridWrappers.Spine; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Controls { diff --git a/SpineViewer/Dialogs/AboutDialog.cs b/SpineViewer/Dialogs/AboutDialog.cs index 400d52c..f5ff22c 100644 --- a/SpineViewer/Dialogs/AboutDialog.cs +++ b/SpineViewer/Dialogs/AboutDialog.cs @@ -1,4 +1,4 @@ -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/SpineViewer/Dialogs/BatchOpenSpineDialog.cs b/SpineViewer/Dialogs/BatchOpenSpineDialog.cs index 19c23c6..0e7ee71 100644 --- a/SpineViewer/Dialogs/BatchOpenSpineDialog.cs +++ b/SpineViewer/Dialogs/BatchOpenSpineDialog.cs @@ -1,5 +1,5 @@ using SpineViewer.Spine; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.ComponentModel; @@ -49,7 +49,7 @@ namespace SpineViewer.Dialogs } } - if (version != SpineVersion.Auto && !Spine.Spine.HasImplementation(version)) + if (version != SpineVersion.Auto && !Spine.SpineObject.HasImplementation(version)) { MessagePopup.Info($"{version.GetName()} 版本尚未实现(咕咕咕~)"); return; diff --git a/SpineViewer/Dialogs/ConvertFileFormatDialog.cs b/SpineViewer/Dialogs/ConvertFileFormatDialog.cs index 30b98f4..5124015 100644 --- a/SpineViewer/Dialogs/ConvertFileFormatDialog.cs +++ b/SpineViewer/Dialogs/ConvertFileFormatDialog.cs @@ -1,5 +1,5 @@ using SpineViewer.Spine; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/SpineViewer/Dialogs/DiagnosticsDialog.cs b/SpineViewer/Dialogs/DiagnosticsDialog.cs index 44094f6..fb5cdbd 100644 --- a/SpineViewer/Dialogs/DiagnosticsDialog.cs +++ b/SpineViewer/Dialogs/DiagnosticsDialog.cs @@ -1,5 +1,5 @@ using Microsoft.Win32; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/SpineViewer/Dialogs/ExportDialog.cs b/SpineViewer/Dialogs/ExportDialog.cs index 25aae4a..a5af9a4 100644 --- a/SpineViewer/Dialogs/ExportDialog.cs +++ b/SpineViewer/Dialogs/ExportDialog.cs @@ -1,5 +1,5 @@ using SpineViewer.PropertyGridWrappers.Exporter; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections; using System.Collections.Generic; diff --git a/SpineViewer/Dialogs/OpenSpineDialog.cs b/SpineViewer/Dialogs/OpenSpineDialog.cs index 4d14194..2525818 100644 --- a/SpineViewer/Dialogs/OpenSpineDialog.cs +++ b/SpineViewer/Dialogs/OpenSpineDialog.cs @@ -1,5 +1,5 @@ using SpineViewer.Spine; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.ComponentModel; @@ -80,7 +80,7 @@ namespace SpineViewer.Dialogs atlasPath = Path.GetFullPath(atlasPath); } - if (version != SpineVersion.Auto && !Spine.Spine.HasImplementation(version)) + if (version != SpineVersion.Auto && !Spine.SpineObject.HasImplementation(version)) { MessagePopup.Info($"{version.GetName()} 版本尚未实现(咕咕咕~)"); return; diff --git a/SpineViewer/Dialogs/ProgressDialog.cs b/SpineViewer/Dialogs/ProgressDialog.cs index ba00b1e..3d8a8e3 100644 --- a/SpineViewer/Dialogs/ProgressDialog.cs +++ b/SpineViewer/Dialogs/ProgressDialog.cs @@ -1,5 +1,5 @@ using NLog; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/SpineViewer/Exporter/Exporter.cs b/SpineViewer/Exporter/Exporter.cs index 5a70697..35c68ab 100644 --- a/SpineViewer/Exporter/Exporter.cs +++ b/SpineViewer/Exporter/Exporter.cs @@ -1,7 +1,7 @@ using NLog; using SpineViewer.Extensions; using SpineViewer.PropertyGridWrappers; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.ComponentModel; @@ -96,12 +96,12 @@ namespace SpineViewer.Exporter /// /// 获取单个模型的单帧画面 /// - protected SFMLImageVideoFrame GetFrame(Spine.Spine spine) => GetFrame([spine]); + protected SFMLImageVideoFrame GetFrame(Spine.SpineObject spine) => GetFrame([spine]); /// /// 获取模型列表的单帧画面 /// - protected SFMLImageVideoFrame GetFrame(Spine.Spine[] spinesToRender) + protected SFMLImageVideoFrame GetFrame(Spine.SpineObject[] spinesToRender) { // RenderTexture 必须临时创建, 随用随取, 防止出现跨线程的情况 using var texPma = GetRenderTexture(); @@ -149,12 +149,12 @@ namespace SpineViewer.Exporter /// /// 每个模型在同一个画面进行导出 /// - protected abstract void ExportSingle(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null); + protected abstract void ExportSingle(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null); /// /// 每个模型独立导出 /// - protected abstract void ExportIndividual(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null); + protected abstract void ExportIndividual(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null); /// /// 检查参数是否合法并规范化参数值, 否则返回用户错误原因 @@ -178,7 +178,7 @@ namespace SpineViewer.Exporter /// 要进行导出的 Spine 列表 /// 用来执行该函数的 worker /// - public virtual void Export(Spine.Spine[] spines, BackgroundWorker? worker = null) + public virtual void Export(Spine.SpineObject[] spines, BackgroundWorker? worker = null) { if (Validate() is string err) throw new ArgumentException(err); diff --git a/SpineViewer/Exporter/FFmpegVideoExporter.cs b/SpineViewer/Exporter/FFmpegVideoExporter.cs index eab9375..9490d19 100644 --- a/SpineViewer/Exporter/FFmpegVideoExporter.cs +++ b/SpineViewer/Exporter/FFmpegVideoExporter.cs @@ -51,7 +51,7 @@ namespace SpineViewer.Exporter return null; } - protected override void ExportSingle(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null) + protected override void ExportSingle(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null) { var noteSuffix = FileNameNoteSuffix; if (!string.IsNullOrWhiteSpace(noteSuffix)) noteSuffix = $"_{noteSuffix}"; @@ -76,7 +76,7 @@ namespace SpineViewer.Exporter } } - protected override void ExportIndividual(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null) + protected override void ExportIndividual(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null) { var noteSuffix = FileNameNoteSuffix; if (!string.IsNullOrWhiteSpace(noteSuffix)) noteSuffix = $"_{noteSuffix}"; diff --git a/SpineViewer/Exporter/FrameExporter.cs b/SpineViewer/Exporter/FrameExporter.cs index 5080068..f23df3a 100644 --- a/SpineViewer/Exporter/FrameExporter.cs +++ b/SpineViewer/Exporter/FrameExporter.cs @@ -43,7 +43,7 @@ namespace SpineViewer.Exporter } private SizeF dpi = new(144, 144); - protected override void ExportSingle(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null) + protected override void ExportSingle(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null) { // 导出单个时必定提供输出文件夹 var filename = $"frame_{timestamp}{ImageFormat.GetSuffix()}"; @@ -65,7 +65,7 @@ namespace SpineViewer.Exporter worker?.ReportProgress(100, $"已处理 1/1"); } - protected override void ExportIndividual(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null) + protected override void ExportIndividual(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null) { int total = spinesToRender.Length; int success = 0; diff --git a/SpineViewer/Exporter/FrameSequenceExporter.cs b/SpineViewer/Exporter/FrameSequenceExporter.cs index bdfac0a..4bbc55f 100644 --- a/SpineViewer/Exporter/FrameSequenceExporter.cs +++ b/SpineViewer/Exporter/FrameSequenceExporter.cs @@ -18,7 +18,7 @@ namespace SpineViewer.Exporter /// public string Suffix { get; set; } = ".png"; - protected override void ExportSingle(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null) + protected override void ExportSingle(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null) { // 导出单个时必定提供输出文件夹, var saveDir = Path.Combine(OutputDir, $"frames_{timestamp}_{FPS:f0}"); @@ -47,7 +47,7 @@ namespace SpineViewer.Exporter } } - protected override void ExportIndividual(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null) + protected override void ExportIndividual(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null) { foreach (var spine in spinesToRender) { diff --git a/SpineViewer/Exporter/VideoExporter.cs b/SpineViewer/Exporter/VideoExporter.cs index 0c99ae9..a36ea2b 100644 --- a/SpineViewer/Exporter/VideoExporter.cs +++ b/SpineViewer/Exporter/VideoExporter.cs @@ -41,7 +41,7 @@ namespace SpineViewer.Exporter /// /// 生成单个模型的帧序列 /// - protected IEnumerable GetFrames(Spine.Spine spine, BackgroundWorker? worker = null) + protected IEnumerable GetFrames(Spine.SpineObject spine, BackgroundWorker? worker = null) { // 独立导出时如果 Duration 小于 0 则使用所有轨道上动画时长最大值 var duration = Duration; @@ -90,7 +90,7 @@ namespace SpineViewer.Exporter /// /// 生成多个模型的帧序列 /// - protected IEnumerable GetFrames(Spine.Spine[] spinesToRender, BackgroundWorker? worker = null) + protected IEnumerable GetFrames(Spine.SpineObject[] spinesToRender, BackgroundWorker? worker = null) { // 导出单个时必须根据 Duration 决定导出时长 var duration = Duration; @@ -135,7 +135,7 @@ namespace SpineViewer.Exporter } } - public override void Export(Spine.Spine[] spines, BackgroundWorker? worker = null) + public override void Export(Spine.SpineObject[] spines, BackgroundWorker? worker = null) { // 导出视频格式需要把模型时间都重置到 0 foreach (var spine in spines) spine.ResetAnimationsTime(); diff --git a/SpineViewer/Forms/SpineViewerForm.cs b/SpineViewer/Forms/SpineViewerForm.cs index bd298e2..1ecefe9 100644 --- a/SpineViewer/Forms/SpineViewerForm.cs +++ b/SpineViewer/Forms/SpineViewerForm.cs @@ -5,8 +5,8 @@ using System.Diagnostics; using SpineViewer.Exporter; using System.Reflection.Metadata; using SpineViewer.PropertyGridWrappers.Exporter; -using SpineViewer.Utilities; using SpineViewer.Natives; +using SpineViewer.Utils; namespace SpineViewer { diff --git a/SpineViewer/Program.cs b/SpineViewer/Program.cs index 88d62c6..aceb313 100644 --- a/SpineViewer/Program.cs +++ b/SpineViewer/Program.cs @@ -1,5 +1,5 @@ using NLog; -using SpineViewer.Utilities; +using SpineViewer.Utils; using System.Diagnostics; using System.Reflection; diff --git a/SpineViewer/PropertyGridWrappers/Spine/SpineAnimationWrapper.cs b/SpineViewer/PropertyGridWrappers/Spine/SpineAnimationWrapper.cs index 1d34434..2264c59 100644 --- a/SpineViewer/PropertyGridWrappers/Spine/SpineAnimationWrapper.cs +++ b/SpineViewer/PropertyGridWrappers/Spine/SpineAnimationWrapper.cs @@ -14,9 +14,9 @@ namespace SpineViewer.PropertyGridWrappers.Spine /// /// [TypeConverter(typeof(TrackWrapperConverter))] - public class TrackWrapper(SpineViewer.Spine.Spine spine, int i) + public class TrackWrapper(SpineObject spine, int i) { - private readonly SpineViewer.Spine.Spine spine = spine; + private readonly SpineObject spine = spine; [Browsable(false)] public int Index { get; } = i; @@ -47,7 +47,7 @@ namespace SpineViewer.PropertyGridWrappers.Spine /// /// 用于在 PropertyGrid 上显示 Spine 动画列表的包装类 /// - public class SpineAnimationWrapper(SpineViewer.Spine.Spine spine) : ICustomTypeDescriptor + public class SpineAnimationWrapper(SpineObject spine) : ICustomTypeDescriptor { /// /// 轨道属性描述符, 实现对属性的读取和赋值 @@ -88,7 +88,7 @@ namespace SpineViewer.PropertyGridWrappers.Spine } [Browsable(false)] - public SpineViewer.Spine.Spine Spine { get; } = spine; + public SpineObject Spine { get; } = spine; /// /// 全轨道动画最大时长 diff --git a/SpineViewer/PropertyGridWrappers/Spine/SpineBaseInfoWrapper.cs b/SpineViewer/PropertyGridWrappers/Spine/SpineBaseInfoWrapper.cs index 18feccb..8741051 100644 --- a/SpineViewer/PropertyGridWrappers/Spine/SpineBaseInfoWrapper.cs +++ b/SpineViewer/PropertyGridWrappers/Spine/SpineBaseInfoWrapper.cs @@ -11,10 +11,10 @@ namespace SpineViewer.PropertyGridWrappers.Spine /// /// 用于在 PropertyGrid 上显示 Spine 基本信息的包装类 /// - public class SpineBaseInfoWrapper(SpineViewer.Spine.Spine spine) + public class SpineBaseInfoWrapper(SpineObject spine) { [Browsable(false)] - public SpineViewer.Spine.Spine Spine { get; } = spine; + public SpineObject Spine { get; } = spine; /// /// 获取所属版本 diff --git a/SpineViewer/PropertyGridWrappers/Spine/SpineDebugWrapper.cs b/SpineViewer/PropertyGridWrappers/Spine/SpineDebugWrapper.cs index 2182e81..4e6a170 100644 --- a/SpineViewer/PropertyGridWrappers/Spine/SpineDebugWrapper.cs +++ b/SpineViewer/PropertyGridWrappers/Spine/SpineDebugWrapper.cs @@ -4,16 +4,17 @@ using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; +using SpineViewer.Spine; namespace SpineViewer.PropertyGridWrappers.Spine { /// /// 用于在 PropertyGrid 上显示 Spine 调试属性的包装类 /// - public class SpineDebugWrapper(SpineViewer.Spine.Spine spine) + public class SpineDebugWrapper(SpineObject spine) { [Browsable(false)] - public SpineViewer.Spine.Spine Spine { get; } = spine; + public SpineObject Spine { get; } = spine; /// /// 显示纹理 diff --git a/SpineViewer/PropertyGridWrappers/Spine/SpineRenderWrapper.cs b/SpineViewer/PropertyGridWrappers/Spine/SpineRenderWrapper.cs index 11f3619..f7068ab 100644 --- a/SpineViewer/PropertyGridWrappers/Spine/SpineRenderWrapper.cs +++ b/SpineViewer/PropertyGridWrappers/Spine/SpineRenderWrapper.cs @@ -4,16 +4,17 @@ using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; +using SpineViewer.Spine; namespace SpineViewer.PropertyGridWrappers.Spine { /// /// 用于在 PropertyGrid 上显示 Spine 渲染设置的包装类 /// - public class SpineRenderWrapper(SpineViewer.Spine.Spine spine) + public class SpineRenderWrapper(SpineObject spine) { [Browsable(false)] - public SpineViewer.Spine.Spine Spine { get; } = spine; + public SpineObject Spine { get; } = spine; /// /// 是否被隐藏, 被隐藏的模型将仅仅在列表显示, 不参与其他行为 diff --git a/SpineViewer/PropertyGridWrappers/Spine/SpineSkinWrapper.cs b/SpineViewer/PropertyGridWrappers/Spine/SpineSkinWrapper.cs index 6b6b653..2932db5 100644 --- a/SpineViewer/PropertyGridWrappers/Spine/SpineSkinWrapper.cs +++ b/SpineViewer/PropertyGridWrappers/Spine/SpineSkinWrapper.cs @@ -12,9 +12,9 @@ namespace SpineViewer.PropertyGridWrappers.Spine /// 对皮肤属性的包装类 /// [TypeConverter(typeof(SkinWrapperConverter))] - public class SkinWrapper(SpineViewer.Spine.Spine spine, int i) + public class SkinWrapper(SpineObject spine, int i) { - private readonly SpineViewer.Spine.Spine spine = spine; + private readonly SpineObject spine = spine; [Browsable(false)] public int Index { get; } = i; @@ -40,7 +40,7 @@ namespace SpineViewer.PropertyGridWrappers.Spine /// 皮肤列表动态类型包装类, 用于提供对 Spine 皮肤列表的管理能力 /// /// 关联的 Spine 对象 - public class SpineSkinWrapper(SpineViewer.Spine.Spine spine) : ICustomTypeDescriptor + public class SpineSkinWrapper(SpineObject spine) : ICustomTypeDescriptor { /// /// 皮肤属性描述符, 实现对属性的读取和赋值 @@ -80,7 +80,7 @@ namespace SpineViewer.PropertyGridWrappers.Spine } [Browsable(false)] - public SpineViewer.Spine.Spine Spine { get; } = spine; + public SpineObject Spine { get; } = spine; /// /// SkinWrapper 属性缓存 diff --git a/SpineViewer/PropertyGridWrappers/Spine/SpineTransformWrapper.cs b/SpineViewer/PropertyGridWrappers/Spine/SpineTransformWrapper.cs index 7de63e7..febf1f6 100644 --- a/SpineViewer/PropertyGridWrappers/Spine/SpineTransformWrapper.cs +++ b/SpineViewer/PropertyGridWrappers/Spine/SpineTransformWrapper.cs @@ -4,16 +4,17 @@ using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; +using SpineViewer.Spine; namespace SpineViewer.PropertyGridWrappers.Spine { /// /// 用于在 PropertyGrid 上显示 Spine 空间变换的包装类 /// - public class SpineTransformWrapper(SpineViewer.Spine.Spine spine) + public class SpineTransformWrapper(SpineObject spine) { [Browsable(false)] - public SpineViewer.Spine.Spine Spine { get; } = spine; + public SpineObject Spine { get; } = spine; /// /// 缩放比例 diff --git a/SpineViewer/PropertyGridWrappers/Spine/SpineWrapper.cs b/SpineViewer/PropertyGridWrappers/Spine/SpineWrapper.cs index b46b8ec..592c205 100644 --- a/SpineViewer/PropertyGridWrappers/Spine/SpineWrapper.cs +++ b/SpineViewer/PropertyGridWrappers/Spine/SpineWrapper.cs @@ -5,13 +5,14 @@ using System.Drawing.Design; using System.Linq; using System.Text; using System.Threading.Tasks; +using SpineViewer.Spine; namespace SpineViewer.PropertyGridWrappers.Spine { - public class SpineWrapper(SpineViewer.Spine.Spine spine) + public class SpineWrapper(SpineObject spine) { [Browsable(false)] - public SpineViewer.Spine.Spine Spine { get; } = spine; + public SpineObject Spine { get; } = spine; [DisplayName("基本信息")] public SpineBaseInfoWrapper BaseInfo { get; } = new(spine); diff --git a/SpineViewer/PropertyGridWrappers/TypeConverter.cs b/SpineViewer/PropertyGridWrappers/TypeConverter.cs index c951e1a..27f7592 100644 --- a/SpineViewer/PropertyGridWrappers/TypeConverter.cs +++ b/SpineViewer/PropertyGridWrappers/TypeConverter.cs @@ -120,11 +120,11 @@ namespace SpineViewer.PropertyGridWrappers public override StandardValuesCollection? GetStandardValues(ITypeDescriptorContext? context) { - if (context?.Instance is SpineViewer.Spine.Spine obj) + if (context?.Instance is SpineObject obj) { return new StandardValuesCollection(obj.SkinNames); } - else if (context?.Instance is SpineViewer.Spine.Spine[] spines) + else if (context?.Instance is SpineObject[] spines) { if (spines.Length > 0) { @@ -146,11 +146,11 @@ namespace SpineViewer.PropertyGridWrappers public override StandardValuesCollection? GetStandardValues(ITypeDescriptorContext? context) { - if (context?.Instance is SpineViewer.Spine.Spine obj) + if (context?.Instance is SpineObject obj) { return new StandardValuesCollection(obj.AnimationNames); } - else if (context?.Instance is SpineViewer.Spine.Spine[] spines) + else if (context?.Instance is SpineObject[] spines) { if (spines.Length > 0) { diff --git a/SpineViewer/Spine/Implementations/Spine/Spine21.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs similarity index 98% rename from SpineViewer/Spine/Implementations/Spine/Spine21.cs rename to SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs index b151c5c..1239b6a 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine21.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs @@ -7,12 +7,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using SpineRuntime21; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine.Implementations.Spine { [SpineImplementation(SpineVersion.V21)] - internal class Spine21 : SpineViewer.Spine.Spine + internal class SpineObject21 : SpineObject { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); @@ -48,7 +48,7 @@ namespace SpineViewer.Spine.Implementations.Spine // 2.1.x 不支持剪裁 //private SkeletonClipping clipping = new(); - public Spine21(string skelPath, string atlasPath) : base(skelPath, atlasPath) + public SpineObject21(string skelPath, string atlasPath) : base(skelPath, atlasPath) { atlas = new Atlas(AtlasPath, textureLoader); try diff --git a/SpineViewer/Spine/Implementations/Spine/Spine36.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs similarity index 98% rename from SpineViewer/Spine/Implementations/Spine/Spine36.cs rename to SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs index 65e1832..c4e6ee9 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine36.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs @@ -7,12 +7,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using SpineRuntime36; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine.Implementations.Spine { [SpineImplementation(SpineVersion.V36)] - internal class Spine36 : SpineViewer.Spine.Spine + internal class SpineObject36 : SpineObject { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); @@ -47,7 +47,7 @@ namespace SpineViewer.Spine.Implementations.Spine private SkeletonClipping clipping = new(); - public Spine36(string skelPath, string atlasPath) : base(skelPath, atlasPath) + public SpineObject36(string skelPath, string atlasPath) : base(skelPath, atlasPath) { atlas = new Atlas(AtlasPath, textureLoader); try diff --git a/SpineViewer/Spine/Implementations/Spine/Spine37.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs similarity index 98% rename from SpineViewer/Spine/Implementations/Spine/Spine37.cs rename to SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs index de441c1..6fc9318 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine37.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs @@ -4,12 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using SpineRuntime37; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine.Implementations.Spine { [SpineImplementation(SpineVersion.V37)] - internal class Spine37 : SpineViewer.Spine.Spine + internal class SpineObject37 : SpineObject { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); @@ -45,7 +45,7 @@ namespace SpineViewer.Spine.Implementations.Spine private SkeletonClipping clipping = new(); - public Spine37(string skelPath, string atlasPath) : base(skelPath, atlasPath) + public SpineObject37(string skelPath, string atlasPath) : base(skelPath, atlasPath) { atlas = new Atlas(AtlasPath, textureLoader); try diff --git a/SpineViewer/Spine/Implementations/Spine/Spine38.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs similarity index 98% rename from SpineViewer/Spine/Implementations/Spine/Spine38.cs rename to SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs index 62032ff..0143f4a 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine38.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs @@ -7,12 +7,12 @@ using System.Text; using System.Threading.Tasks; using SpineRuntime38; using SpineRuntime38.Attachments; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine.Implementations.Spine { [SpineImplementation(SpineVersion.V38)] - internal class Spine38 : SpineViewer.Spine.Spine + internal class SpineObject38 : SpineObject { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); @@ -51,7 +51,7 @@ namespace SpineViewer.Spine.Implementations.Spine private SkeletonClipping clipping = new(); - public Spine38(string skelPath, string atlasPath) : base(skelPath, atlasPath) + public SpineObject38(string skelPath, string atlasPath) : base(skelPath, atlasPath) { atlas = new Atlas(AtlasPath, textureLoader); try diff --git a/SpineViewer/Spine/Implementations/Spine/Spine40.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs similarity index 98% rename from SpineViewer/Spine/Implementations/Spine/Spine40.cs rename to SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs index 139e2a7..58756c6 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine40.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs @@ -6,12 +6,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using SpineRuntime40; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine.Implementations.Spine { [SpineImplementation(SpineVersion.V40)] - internal class Spine40 : SpineViewer.Spine.Spine + internal class SpineObject40 : SpineObject { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); @@ -47,7 +47,7 @@ namespace SpineViewer.Spine.Implementations.Spine private SkeletonClipping clipping = new(); - public Spine40(string skelPath, string atlasPath) : base(skelPath, atlasPath) + public SpineObject40(string skelPath, string atlasPath) : base(skelPath, atlasPath) { atlas = new Atlas(AtlasPath, textureLoader); try diff --git a/SpineViewer/Spine/Implementations/Spine/Spine41.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs similarity index 98% rename from SpineViewer/Spine/Implementations/Spine/Spine41.cs rename to SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs index 1de932c..5675f40 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine41.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs @@ -6,12 +6,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using SpineRuntime41; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine.Implementations.Spine { [SpineImplementation(SpineVersion.V41)] - internal class Spine41 : SpineViewer.Spine.Spine + internal class SpineObject41 : SpineObject { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); @@ -47,7 +47,7 @@ namespace SpineViewer.Spine.Implementations.Spine private SkeletonClipping clipping = new(); - public Spine41(string skelPath, string atlasPath) : base(skelPath, atlasPath) + public SpineObject41(string skelPath, string atlasPath) : base(skelPath, atlasPath) { atlas = new Atlas(AtlasPath, textureLoader); try diff --git a/SpineViewer/Spine/Implementations/Spine/Spine42.cs b/SpineViewer/Spine/Implementations/SpineObject/Spineobject42.cs similarity index 98% rename from SpineViewer/Spine/Implementations/Spine/Spine42.cs rename to SpineViewer/Spine/Implementations/SpineObject/Spineobject42.cs index e95b39e..61fcbf3 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine42.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/Spineobject42.cs @@ -6,12 +6,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using SpineRuntime42; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine.Implementations.Spine { [SpineImplementation(SpineVersion.V42)] - internal class Spine42 : SpineViewer.Spine.Spine + internal class Spineobject42 : SpineObject { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); @@ -47,7 +47,7 @@ namespace SpineViewer.Spine.Implementations.Spine private SkeletonClipping clipping = new(); - public Spine42(string skelPath, string atlasPath) : base(skelPath, atlasPath) + public Spineobject42(string skelPath, string atlasPath) : base(skelPath, atlasPath) { atlas = new Atlas(AtlasPath, textureLoader); try diff --git a/SpineViewer/Spine/SkeletonConverter.cs b/SpineViewer/Spine/SkeletonConverter.cs index c86387f..0785456 100644 --- a/SpineViewer/Spine/SkeletonConverter.cs +++ b/SpineViewer/Spine/SkeletonConverter.cs @@ -9,7 +9,7 @@ using System.Text; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Encodings.Web; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine { diff --git a/SpineViewer/Spine/SpineHelper.cs b/SpineViewer/Spine/SpineHelper.cs index 2fb30a3..4b60700 100644 --- a/SpineViewer/Spine/SpineHelper.cs +++ b/SpineViewer/Spine/SpineHelper.cs @@ -1,4 +1,4 @@ -using SpineViewer.Utilities; +using SpineViewer.Utils; using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/SpineViewer/Spine/Spine.cs b/SpineViewer/Spine/SpineObject.cs similarity index 94% rename from SpineViewer/Spine/Spine.cs rename to SpineViewer/Spine/SpineObject.cs index fd00ea6..59e11a6 100644 --- a/SpineViewer/Spine/Spine.cs +++ b/SpineViewer/Spine/SpineObject.cs @@ -5,14 +5,14 @@ using System.Drawing.Design; using NLog; using System.Xml.Linq; using SpineViewer.Extensions; -using SpineViewer.Utilities; +using SpineViewer.Utils; namespace SpineViewer.Spine { /// /// Spine 基类, 使用静态方法 New 来创建具体版本对象, 该类是线程安全的 /// - public abstract class Spine : ImplementationResolver, SFML.Graphics.Drawable, IDisposable + public abstract class SpineObject : ImplementationResolver, SFML.Graphics.Drawable, IDisposable { /// /// 空动画标记 @@ -32,7 +32,7 @@ namespace SpineViewer.Spine /// /// 创建特定版本的 Spine /// - public static Spine New(SpineVersion version, string skelPath, string? atlasPath = null) + public static SpineObject New(SpineVersion version, string skelPath, string? atlasPath = null) { atlasPath ??= Path.ChangeExtension(skelPath, ".atlas"); skelPath = Path.GetFullPath(skelPath); @@ -48,13 +48,16 @@ namespace SpineViewer.Spine /// private readonly object _lock = new(); - private readonly Logger logger = LogManager.GetCurrentClassLogger(); + /// + /// 日志器 + /// + protected readonly Logger logger = LogManager.GetCurrentClassLogger(); private bool skinLoggerWarned = false; /// /// 构造函数 /// - public Spine(string skelPath, string atlasPath) + public SpineObject(string skelPath, string atlasPath) { Version = GetType().GetCustomAttribute().ImplementationKey; AssetsDir = Directory.GetParent(skelPath).FullName; @@ -66,7 +69,7 @@ namespace SpineViewer.Spine /// /// 构造函数之后的初始化工作 /// - private Spine PostInit() + private SpineObject PostInit() { SkinNames = skinNames.AsReadOnly(); AnimationNames = animationNames.AsReadOnly(); @@ -98,7 +101,7 @@ namespace SpineViewer.Spine return this; } - ~Spine() { Dispose(false); } + ~SpineObject() { Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { Preview?.Dispose(); } @@ -279,7 +282,7 @@ namespace SpineViewer.Spine loadedSkins.Add(name); reloadSkins(); - if (!skinLoggerWarned && Version <= SpineVersion.V37 && loadedSkins.Count > 1) + if (!skinLoggerWarned && Version < SpineVersion.V38 && loadedSkins.Count > 1) { logger.Warn($"Multiplt skins not supported in SpineVersion {Version.GetName()}"); skinLoggerWarned = true; @@ -292,9 +295,9 @@ namespace SpineViewer.Spine /// public void UnloadSkin(int idx) { - if (idx < 0 || idx >= loadedSkins.Count) return; lock (_lock) { + if (idx < 0 || idx >= loadedSkins.Count) return; loadedSkins.RemoveAt(idx); reloadSkins(); } @@ -305,9 +308,9 @@ 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)) return; loadedSkins[idx] = name; reloadSkins(); } diff --git a/SpineViewer/Utilities/ImplementationResolver.cs b/SpineViewer/Utils/ImplementationResolver.cs similarity index 98% rename from SpineViewer/Utilities/ImplementationResolver.cs rename to SpineViewer/Utils/ImplementationResolver.cs index fba9151..eb1a1aa 100644 --- a/SpineViewer/Utilities/ImplementationResolver.cs +++ b/SpineViewer/Utils/ImplementationResolver.cs @@ -6,7 +6,7 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; -namespace SpineViewer.Utilities +namespace SpineViewer.Utils { public interface IImplementationKey { diff --git a/SpineViewer/Utilities/MessagePopup.cs b/SpineViewer/Utils/MessagePopup.cs similarity index 97% rename from SpineViewer/Utilities/MessagePopup.cs rename to SpineViewer/Utils/MessagePopup.cs index c897880..e900923 100644 --- a/SpineViewer/Utilities/MessagePopup.cs +++ b/SpineViewer/Utils/MessagePopup.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows; -namespace SpineViewer.Utilities +namespace SpineViewer.Utils { /// /// 弹窗消息静态类 diff --git a/SpineViewer/Utilities/SFMLBlendMode.cs b/SpineViewer/Utils/SFMLBlendMode.cs similarity index 99% rename from SpineViewer/Utilities/SFMLBlendMode.cs rename to SpineViewer/Utils/SFMLBlendMode.cs index e0bdd15..d07f366 100644 --- a/SpineViewer/Utilities/SFMLBlendMode.cs +++ b/SpineViewer/Utils/SFMLBlendMode.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SpineViewer.Utilities +namespace SpineViewer.Utils { /// /// SFML 混合模式, 预乘模式下输入和输出的像素值都是预乘的 diff --git a/SpineViewer/Utilities/SFMLShader.cs b/SpineViewer/Utils/SFMLShader.cs similarity index 98% rename from SpineViewer/Utilities/SFMLShader.cs rename to SpineViewer/Utils/SFMLShader.cs index a03e709..e93ccd9 100644 --- a/SpineViewer/Utilities/SFMLShader.cs +++ b/SpineViewer/Utils/SFMLShader.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SpineViewer.Utilities +namespace SpineViewer.Utils { public static class SFMLShader {