Add enlarging debug point of current blend value in Multi blend nodes in Anim Graph window

This commit is contained in:
Wojtek Figat
2024-08-28 15:23:10 +02:00
parent 046865ba00
commit 0dbcdc3217

View File

@@ -23,6 +23,7 @@ namespace FlaxEditor.Surface.Archetypes
private readonly bool _is2D; private readonly bool _is2D;
private Float2 _rangeX, _rangeY; private Float2 _rangeX, _rangeY;
private Float2 _debugPos = Float2.Minimum; private Float2 _debugPos = Float2.Minimum;
private float _debugScale = 1.0f;
private readonly List<BlendPoint> _blendPoints = new List<BlendPoint>(); private readonly List<BlendPoint> _blendPoints = new List<BlendPoint>();
/// <summary> /// <summary>
@@ -445,6 +446,7 @@ namespace FlaxEditor.Surface.Archetypes
// Debug current playback position // Debug current playback position
if (((AnimGraphSurface)_node.Surface).TryGetTraceEvent(_node, out var traceEvent)) if (((AnimGraphSurface)_node.Surface).TryGetTraceEvent(_node, out var traceEvent))
{ {
var prev = _debugPos;
if (_is2D) if (_is2D)
{ {
unsafe unsafe
@@ -456,10 +458,17 @@ namespace FlaxEditor.Surface.Archetypes
} }
else else
_debugPos = new Float2(traceEvent.Value, 0.0f); _debugPos = new Float2(traceEvent.Value, 0.0f);
// Scale debug pointer when it moves to make it more visible when investigating blending
const float debugMaxSize = 2.0f;
float debugScale = Mathf.Saturate(Float2.Distance(ref _debugPos, ref prev) / new Float2(_rangeX.Absolute.ValuesSum, _rangeY.Absolute.ValuesSum).Length * 100.0f) * debugMaxSize + 1.0f;
float debugBlendSpeed = _debugScale <= debugScale ? 4.0f : 1.0f;
_debugScale = Mathf.Lerp(_debugScale, debugScale, deltaTime * debugBlendSpeed);
} }
else else
{ {
_debugPos = Float2.Minimum; _debugPos = Float2.Minimum;
_debugScale = 1.0f;
} }
base.Update(deltaTime); base.Update(deltaTime);
@@ -606,7 +615,7 @@ namespace FlaxEditor.Surface.Archetypes
{ {
// Draw dot with outline // Draw dot with outline
var icon = Editor.Instance.Icons.VisjectBoxOpen32; var icon = Editor.Instance.Icons.VisjectBoxOpen32;
var size = BlendPoint.DefaultSize; var size = BlendPoint.DefaultSize * _debugScale;
var debugPos = BlendSpacePosToBlendPointPos(_debugPos); var debugPos = BlendSpacePosToBlendPointPos(_debugPos);
var debugRect = new Rectangle(debugPos + new Float2(size * -0.5f) + size * 0.5f, new Float2(size)); var debugRect = new Rectangle(debugPos + new Float2(size * -0.5f) + size * 0.5f, new Float2(size));
var outline = Color.Black; // Shadow var outline = Color.Black; // Shadow