diff --git a/Source/Editor/GUI/CurveEditor.Contents.cs b/Source/Editor/GUI/CurveEditor.Contents.cs index 25954abfa..4eec05c47 100644 --- a/Source/Editor/GUI/CurveEditor.Contents.cs +++ b/Source/Editor/GUI/CurveEditor.Contents.cs @@ -234,7 +234,7 @@ namespace FlaxEditor.GUI var k = _editor.GetKeyframe(_movingTangent.Index); var kv = _editor.GetKeyframeValue(k); var value = _editor.Accessor.GetCurveValue(ref kv, _movingTangent.Component); - _movingTangent.TangentValue = PointToKeyframes(location, ref viewRect).Y - value; + _movingTangent.TangentValue = (PointToKeyframes(location, ref viewRect).Y - value) * _editor.ViewScale.X; _editor.UpdateTangents(); Cursor = CursorType.SizeNS; _movedKeyframes = true; diff --git a/Source/Editor/GUI/CurveEditor.cs b/Source/Editor/GUI/CurveEditor.cs index 6c6c9ba8e..1ef32e03b 100644 --- a/Source/Editor/GUI/CurveEditor.cs +++ b/Source/Editor/GUI/CurveEditor.cs @@ -163,10 +163,11 @@ namespace FlaxEditor.GUI /// public override void Draw() { + var style = Style.Current; var rect = new Rectangle(Float2.Zero, Size); - var color = Editor.ShowCollapsed ? Color.Gray : Editor.Colors[Component]; + var color = Editor.ShowCollapsed ? style.ForegroundDisabled : Editor.Colors[Component]; if (IsSelected) - color = Editor.ContainsFocus ? Color.YellowGreen : Color.Lerp(Color.Gray, Color.YellowGreen, 0.4f); + color = Editor.ContainsFocus ? style.SelectionBorder : Color.Lerp(style.ForegroundDisabled, style.SelectionBorder, 0.4f); if (IsMouseOver) color *= 1.1f; Render2D.FillRectangle(rect, color); @@ -244,14 +245,19 @@ namespace FlaxEditor.GUI set => Editor.SetKeyframeTangentInternal(Index, IsIn, Component, value); } + internal float TangentOffset => 50.0f / Editor.ViewScale.X; + /// public override void Draw() { + var style = Style.Current; + var thickness = 6.0f / Mathf.Max(Editor.ViewScale.X, 1.0f); + var size = Size; var pointPos = PointFromParent(Point.Center); - Render2D.DrawLine(Size * 0.5f, pointPos, Color.Gray); + Render2D.DrawLine(size * 0.5f, pointPos, style.ForegroundDisabled, thickness); - var rect = new Rectangle(Float2.Zero, Size); - var color = Color.MediumVioletRed; + var rect = new Rectangle(Float2.Zero, size); + var color = style.BorderSelected; if (IsMouseOver) color *= 1.1f; Render2D.FillRectangle(rect, color); @@ -2202,7 +2208,7 @@ namespace FlaxEditor.GUI var tangent = t.TangentValue; var direction = t.IsIn ? -1.0f : 1.0f; - var offset = 30.0f; + var offset = t.TangentOffset; var location = GetKeyframePoint(ref k, selectedComponent); t.Size = KeyframesSize / ViewScale; t.Location = new Float2 @@ -2229,6 +2235,18 @@ namespace FlaxEditor.GUI } } + /// + protected override void SetScaleInternal(ref Float2 scale) + { + base.SetScaleInternal(ref scale); + + if (!_showCollapsed) + { + // Refresh keyframes when zooming (their size depends on the scale) + UpdateKeyframes(); + } + } + /// protected override void OnShowContextMenu(ContextMenu.ContextMenu cm, int selectionCount) {