增加精确命中检测和插槽输出

This commit is contained in:
ww-rm
2025-10-01 23:43:03 +08:00
parent 44548618e8
commit 42bd5c2830
9 changed files with 277 additions and 53 deletions

View File

@@ -88,6 +88,12 @@ namespace SpineViewer.Models
[ObservableProperty]
private bool _renderSelectedOnly;
[ObservableProperty]
private bool _usePreciseHitTest;
[ObservableProperty]
private bool _logHitSlots;
[ObservableProperty]
private bool _wallpaperView;

View File

@@ -429,11 +429,19 @@ namespace SpineViewer.Models
}
/// <summary>
/// 命中检测, 可以比整体包围盒略精确一点
/// 命中检测, 可选是否使用精确检测, 会有性能损失
/// </summary>
public bool HitTest(float x, float y)
public bool HitTest(float x, float y, bool precise = false)
{
lock (_lock) return _spineObject.Skeleton.HitTest(x, y);
lock (_lock) return _spineObject.Skeleton.HitTest(x, y, precise);
}
/// <summary>
/// 完整的命中检测, 会检测所有插槽是否命中并返回命中的插槽名称
/// </summary>
public string[] HitTestFull(float x, float y, bool precise = false)
{
lock (_lock) return _spineObject.Skeleton.HitTestFull(x, y, precise).Select(v => v.Name).ToArray();
}
public SpineObjectConfigModel ObjectConfig