From 2c5cc7fcc00d83fe165ef7ef09830571ee41cf8e Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Tue, 16 Dec 2025 17:32:35 -0600 Subject: [PATCH] Fix double drawing. --- Source/Editor/Gizmo/DirectionGizmo.cs | 22 +++++++------------ .../Viewport/MainEditorGizmoViewport.cs | 9 ++++---- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/Source/Editor/Gizmo/DirectionGizmo.cs b/Source/Editor/Gizmo/DirectionGizmo.cs index 1c0af3d70..082ceef0c 100644 --- a/Source/Editor/Gizmo/DirectionGizmo.cs +++ b/Source/Editor/Gizmo/DirectionGizmo.cs @@ -118,13 +118,10 @@ public class DirectionGizmo : ContainerControl { _hoveredAxisIndex = -1; - // Convert local control space to screen space - Float2 viewportLocation = PointToParent(ref location); - // Check which axis is being hovered - check from closest to farthest for proper layering for (int i = _spritePositions.Count - 1; i >= 0; i--) { - if (IsPointInSprite(viewportLocation, _spritePositions[i].position)) + if (IsPointInSprite(location, _spritePositions[i].position)) { _hoveredAxisIndex = i; break; @@ -140,13 +137,10 @@ public class DirectionGizmo : ContainerControl if (base.OnMouseDown(location, button)) return true; - // Convert local control space to screen space - Float2 viewportLocation = PointToParent(ref location); - // Check which axis is being clicked - check from closest to farthest for proper layering for (int i = _spritePositions.Count - 1; i >= 0; i--) { - if (IsPointInSprite(viewportLocation, _spritePositions[i].position)) + if (IsPointInSprite(location, _spritePositions[i].position)) { OrientViewToAxis(_spritePositions[i].direction); return true; @@ -182,9 +176,8 @@ public class DirectionGizmo : ContainerControl _viewportProjection.Init(_owner.Viewport); _gizmoCenter = _viewport.Task.View.WorldPosition + _viewport.Task.View.Direction * 1500; _viewportProjection.ProjectPoint(_gizmoCenter, out var gizmoCenterScreen); - - // Use the settable bounds instead of hardcoded positioning - var relativeCenter = Bounds.Location + Bounds.Size * 0.5f; + + var relativeCenter = Size * 0.5f; // Project unit vectors _viewportProjection.ProjectPoint(_gizmoCenter + Vector3.Right, out var xProjected); @@ -233,7 +226,9 @@ public class DirectionGizmo : ContainerControl // Rebuild sprite positions list for hover detection _spritePositions.Clear(); - + + Render2D.DrawSprite(_posHandle, new Rectangle(0, 0, Size), Color.Black.AlphaMultiplied(0.1f)); + // Draw in order from farthest to closest for (int i = 0; i < _axisData.Count; i++) { @@ -258,8 +253,7 @@ public class DirectionGizmo : ContainerControl { Render2D.DrawSprite(_posHandle, new Rectangle(tipTextScreen - new Float2(_spriteRadius), new Float2(_spriteRadius * 2)), axis.AxisColor.RGBMultiplied(0.65f)); Render2D.DrawSprite(_negHandle, new Rectangle(tipTextScreen - new Float2(_spriteRadius), new Float2(_spriteRadius * 2)), axis.AxisColor); - - // Draw white label text on hover for negative axes + if (isHovered) { var font = _fontReference.GetFont(); diff --git a/Source/Editor/Viewport/MainEditorGizmoViewport.cs b/Source/Editor/Viewport/MainEditorGizmoViewport.cs index fccb7a79e..86dba5947 100644 --- a/Source/Editor/Viewport/MainEditorGizmoViewport.cs +++ b/Source/Editor/Viewport/MainEditorGizmoViewport.cs @@ -218,11 +218,11 @@ namespace FlaxEditor.Viewport // Add rubber band selector _rubberBandSelector = new ViewportRubberBandSelector(this); _directionGizmo = new DirectionGizmo(this); - _directionGizmo.Parent = this; _directionGizmo.AnchorPreset = AnchorPresets.TopRight; - _directionGizmo.LocalY += 30; - _directionGizmo.LocalX -= 10; - _directionGizmo.Size = new Float2(100, 100); + _directionGizmo.Parent = this; + _directionGizmo.LocalY += 25; + _directionGizmo.LocalX -= 150; + _directionGizmo.Size = new Float2(150, 150); // Add grid Grid = new GridGizmo(this); @@ -600,7 +600,6 @@ namespace FlaxEditor.Viewport // Draw rubber band for rectangle selection _rubberBandSelector.Draw(); - _directionGizmo.Draw(); } ///