Fix double drawing.

This commit is contained in:
Chandler Cox
2025-12-16 17:32:35 -06:00
parent b9f177d1ab
commit 2c5cc7fcc0
2 changed files with 12 additions and 19 deletions

View File

@@ -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();

View File

@@ -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();
}
/// <inheritdoc />