diff --git a/SpineViewer/Controls/SpinePreviewPanel.cs b/SpineViewer/Controls/SpinePreviewPanel.cs index e4d83e7..b079797 100644 --- a/SpineViewer/Controls/SpinePreviewPanel.cs +++ b/SpineViewer/Controls/SpinePreviewPanel.cs @@ -475,7 +475,7 @@ namespace SpineViewer.Controls foreach (int i in SpineListView.SelectedIndices) { if (spines[i].IsHidden) continue; - if (!spines[i].GetBounds().Contains(src)) continue; + if (!spines[i].GetCurrentBounds().Contains(src)) continue; hit = true; break; } @@ -492,7 +492,7 @@ namespace SpineViewer.Controls for (int i = 0; i < spines.Count; i++) { if (spines[i].IsHidden) continue; - if (!spines[i].GetBounds().Contains(src)) continue; + if (!spines[i].GetCurrentBounds().Contains(src)) continue; hit = true; @@ -514,7 +514,7 @@ namespace SpineViewer.Controls for (int i = 0; i < spines.Count; i++) { if (spines[i].IsHidden) continue; - if (!spines[i].GetBounds().Contains(src)) continue; + if (!spines[i].GetCurrentBounds().Contains(src)) continue; SpineListView.SelectedIndices.Add(i); break; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs index 4fb840d..38e03e4 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs @@ -188,7 +188,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject public override float GetAnimationDuration(string name) { return skeletonData.FindAnimation(name)?.Duration ?? 0f; } - protected override RectangleF getBounds() + protected override RectangleF getCurrentBounds() { float[] temp = new float[8]; var drawOrderItems = skeleton.DrawOrder; @@ -500,7 +500,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject if (debugBounds) { var vt = new SFML.Graphics.Vertex() { Color = BoundsColor }; - var b = getBounds(); + var b = getCurrentBounds(); vt.Position.X = b.Left; vt.Position.Y = b.Top; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs index ea59889..b830826 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs @@ -187,7 +187,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject public override float GetAnimationDuration(string name) { return skeletonData.FindAnimation(name)?.Duration ?? 0f; } - protected override RectangleF getBounds() + protected override RectangleF getCurrentBounds() { float[] _ = []; skeleton.GetBounds(out var x, out var y, out var w, out var h, ref _); @@ -486,7 +486,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject if (debugBounds) { var vt = new SFML.Graphics.Vertex() { Color = BoundsColor }; - var b = getBounds(); + var b = getCurrentBounds(); vt.Position.X = b.Left; vt.Position.Y = b.Top; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs index f4c6fb2..93e9f1d 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs @@ -159,7 +159,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject public override float GetAnimationDuration(string name) { return skeletonData.FindAnimation(name)?.Duration ?? 0f; } - protected override RectangleF getBounds() + protected override RectangleF getCurrentBounds() { float[] _ = []; skeleton.GetBounds(out var x, out var y, out var w, out var h, ref _); @@ -458,7 +458,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject if (debugBounds) { var vt = new SFML.Graphics.Vertex() { Color = BoundsColor }; - var b = getBounds(); + var b = getCurrentBounds(); vt.Position.X = b.Left; vt.Position.Y = b.Top; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs index 8fadf91..395108d 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs @@ -167,7 +167,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject public override float GetAnimationDuration(string name) { return skeletonData.FindAnimation(name)?.Duration ?? 0f; } - protected override RectangleF getBounds() + protected override RectangleF getCurrentBounds() { float[] _ = []; skeleton.GetBounds(out var x, out var y, out var w, out var h, ref _); @@ -466,7 +466,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject if (debugBounds) { var vt = new SFML.Graphics.Vertex() { Color = BoundsColor }; - var b = getBounds(); + var b = getCurrentBounds(); vt.Position.X = b.Left; vt.Position.Y = b.Top; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs index fe19d17..3f22c5c 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs @@ -163,7 +163,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject public override float GetAnimationDuration(string name) { return skeletonData.FindAnimation(name)?.Duration ?? 0f; } - protected override RectangleF getBounds() + protected override RectangleF getCurrentBounds() { float[] _ = []; skeleton.GetBounds(out var x, out var y, out var w, out var h, ref _); @@ -462,7 +462,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject if (debugBounds) { var vt = new SFML.Graphics.Vertex() { Color = BoundsColor }; - var b = getBounds(); + var b = getCurrentBounds(); vt.Position.X = b.Left; vt.Position.Y = b.Top; diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs index 6a1ae27..5d4004c 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs @@ -163,7 +163,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject public override float GetAnimationDuration(string name) { return skeletonData.FindAnimation(name)?.Duration ?? 0f; } - protected override RectangleF getBounds() + protected override RectangleF getCurrentBounds() { float[] _ = []; skeleton.GetBounds(out var x, out var y, out var w, out var h, ref _); @@ -462,7 +462,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject if (debugBounds) { var vt = new SFML.Graphics.Vertex() { Color = BoundsColor }; - var b = getBounds(); + var b = getCurrentBounds(); vt.Position.X = b.Left; vt.Position.Y = b.Top; diff --git a/SpineViewer/Spine/Implementations/SpineObject/Spineobject42.cs b/SpineViewer/Spine/Implementations/SpineObject/Spineobject42.cs index cdbf38c..d001d67 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/Spineobject42.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/Spineobject42.cs @@ -163,7 +163,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject public override float GetAnimationDuration(string name) { return skeletonData.FindAnimation(name)?.Duration ?? 0f; } - protected override RectangleF getBounds() + protected override RectangleF getCurrentBounds() { float[] _ = []; skeleton.GetBounds(out var x, out var y, out var w, out var h, ref _); @@ -462,7 +462,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject if (debugBounds) { var vt = new SFML.Graphics.Vertex() { Color = BoundsColor }; - var b = getBounds(); + var b = getCurrentBounds(); vt.Position.X = b.Left; vt.Position.Y = b.Top; diff --git a/SpineViewer/Spine/SpineObject.cs b/SpineViewer/Spine/SpineObject.cs index 2f63b75..1527597 100644 --- a/SpineViewer/Spine/SpineObject.cs +++ b/SpineViewer/Spine/SpineObject.cs @@ -83,7 +83,7 @@ namespace SpineViewer.Spine // 除此之外, 似乎还和 tex 的 Dispose 有关 // 如果不对 tex 进行 Dispose, 那么不管是否 Draw 都正常不会死锁 var tex = new SFML.Graphics.RenderTexture(PREVIEW_WIDTH, PREVIEW_HEIGHT); - using var view = getBounds().GetView(PREVIEW_WIDTH, PREVIEW_HEIGHT); + using var view = getCurrentBounds().GetView(PREVIEW_WIDTH, PREVIEW_HEIGHT); tex.SetView(view); tex.Clear(SFML.Graphics.Color.Transparent); tex.Draw(this); @@ -444,8 +444,14 @@ namespace SpineViewer.Spine /// /// 获取当前状态包围盒 /// - public RectangleF GetBounds() { lock (_lock) return getBounds(); } - protected abstract RectangleF getBounds(); + public RectangleF GetCurrentBounds() { lock (_lock) return getCurrentBounds(); } + protected abstract RectangleF getCurrentBounds(); + + /// + /// 获取当前参数下包围盒最大范围, 不是精确值 + /// + //public RectangleF GetBounds() { } + //protected abstract RectangleF getBounds(); /// /// 更新内部状态