From 19caa5e533a895403752eda0bec9fa5ef336fd57 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 7 Aug 2026 07:08:17 +0200 Subject: [PATCH] Fix material drag over highlights to not flicker --- .../Editor/Viewport/MainEditorGizmoViewport.cs | 4 +++- Source/Editor/Viewport/PrefabWindowViewport.cs | 4 +++- Source/Editor/Viewport/ViewportDraggingHelper.cs | 16 +++++++++++++--- Source/Editor/ViewportDebugDrawData.cs | 2 ++ 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Source/Editor/Viewport/MainEditorGizmoViewport.cs b/Source/Editor/Viewport/MainEditorGizmoViewport.cs index 51b240202..f457edd29 100644 --- a/Source/Editor/Viewport/MainEditorGizmoViewport.cs +++ b/Source/Editor/Viewport/MainEditorGizmoViewport.cs @@ -787,10 +787,12 @@ namespace FlaxEditor.Viewport /// public override DragDropEffect OnDragMove(ref Float2 location, DragData data) { - DragHandlers.ClearDragEffects(); var result = base.OnDragMove(ref location, data); if (result != DragDropEffect.None) + { + DragHandlers.ClearDragEffects(); return result; + } return DragHandlers.DragEnter(ref location, data); } diff --git a/Source/Editor/Viewport/PrefabWindowViewport.cs b/Source/Editor/Viewport/PrefabWindowViewport.cs index a599615de..0a3b4b4e5 100644 --- a/Source/Editor/Viewport/PrefabWindowViewport.cs +++ b/Source/Editor/Viewport/PrefabWindowViewport.cs @@ -647,10 +647,12 @@ namespace FlaxEditor.Viewport /// public override DragDropEffect OnDragMove(ref Float2 location, DragData data) { - DragHandlers.ClearDragEffects(); var result = base.OnDragMove(ref location, data); if (result != DragDropEffect.None) + { + DragHandlers.ClearDragEffects(); return result; + } return DragHandlers.DragEnter(ref location, data); } diff --git a/Source/Editor/Viewport/ViewportDraggingHelper.cs b/Source/Editor/Viewport/ViewportDraggingHelper.cs index 3e6fce6ad..5c68b399a 100644 --- a/Source/Editor/Viewport/ViewportDraggingHelper.cs +++ b/Source/Editor/Viewport/ViewportDraggingHelper.cs @@ -65,7 +65,7 @@ namespace FlaxEditor.Viewport { if (_previewStaticModel) debugDrawData.HighlightModel(_previewStaticModel, _previewModelEntryIndex); - if (_previewBrushSurface.Brush != null) + if (_previewBrushSurface.Brush) debugDrawData.HighlightBrushSurface(_previewBrushSurface); } @@ -120,10 +120,12 @@ namespace FlaxEditor.Viewport if (_dragAssets.HasValidDrag && _dragAssets.Objects[0].IsOfType()) { GetHitLocation(ref location, out var hit, out _, out _); - ClearDragEffects(); var material = FlaxEngine.Content.LoadAsync(_dragAssets.Objects[0].ID); - if (material.IsDecal) + if (material && material.IsDecal) + { + ClearDragEffects(); return; + } if (hit is StaticModelNode staticModelNode) { @@ -135,6 +137,14 @@ namespace FlaxEditor.Viewport { _previewBrushSurface = brushSurfaceNode.Surface; } + else + { + ClearDragEffects(); + } + } + else + { + ClearDragEffects(); } } diff --git a/Source/Editor/ViewportDebugDrawData.cs b/Source/Editor/ViewportDebugDrawData.cs index 7b5bee95c..d70ec9cfb 100644 --- a/Source/Editor/ViewportDebugDrawData.cs +++ b/Source/Editor/ViewportDebugDrawData.cs @@ -80,6 +80,8 @@ namespace FlaxEditor /// The surface. public void HighlightBrushSurface(BrushSurface surface) { + if (surface.Brush == null) + return; surface.Brush.GetVertices(surface.Index, out var vertices); if (vertices.Length > 0) {