diff --git a/Source/Editor/Viewport/EditorViewport.cs b/Source/Editor/Viewport/EditorViewport.cs
index 68e0723b0..e30e242e9 100644
--- a/Source/Editor/Viewport/EditorViewport.cs
+++ b/Source/Editor/Viewport/EditorViewport.cs
@@ -968,6 +968,14 @@ namespace FlaxEditor.Viewport
debugView.VisibleChanged += WidgetViewModeShowHide;
}
+ // Clear Debug Draw
+ {
+ var button = ViewWidgetButtonMenu.AddButton("Clear Debug Draw");
+ button.CloseMenuOnClick = false;
+ button.Clicked += () => DebugDraw.Clear();
+ ViewWidgetButtonMenu.VisibleChanged += (Control cm) => { button.Visible = DebugDraw.CanClear(); };
+ }
+
ViewWidgetButtonMenu.AddSeparator();
// Brightness
diff --git a/Source/Editor/Windows/GameWindow.cs b/Source/Editor/Windows/GameWindow.cs
index 5bff8db69..ebc64cbd8 100644
--- a/Source/Editor/Windows/GameWindow.cs
+++ b/Source/Editor/Windows/GameWindow.cs
@@ -117,7 +117,6 @@ namespace FlaxEditor.Windows
{
if (!AudioMuted)
Audio.MasterVolume = value;
-
_audioVolume = value;
}
}
@@ -677,6 +676,14 @@ namespace FlaxEditor.Windows
checkbox.StateChanged += x => ShowDebugDraw = x.Checked;
}
+ // Clear Debug Draw
+ if (DebugDraw.CanClear())
+ {
+ var button = menu.AddButton("Clear Debug Draw");
+ button.CloseMenuOnClick = false;
+ button.Clicked += () => DebugDraw.Clear();
+ }
+
menu.AddSeparator();
// Mute Audio
diff --git a/Source/Engine/Debug/DebugDraw.cpp b/Source/Engine/Debug/DebugDraw.cpp
index 4dacb95d6..6e2388ed2 100644
--- a/Source/Engine/Debug/DebugDraw.cpp
+++ b/Source/Engine/Debug/DebugDraw.cpp
@@ -347,6 +347,11 @@ struct DebugDrawContext
DebugDrawData DebugDrawDepthTest;
Float3 LastViewPos = Float3::Zero;
Matrix LastViewProj = Matrix::Identity;
+
+ inline int32 Count() const
+ {
+ return DebugDrawDefault.Count() + DebugDrawDepthTest.Count();
+ }
};
namespace
@@ -739,6 +744,13 @@ void DebugDraw::SetContext(void* context)
Context = context ? (DebugDrawContext*)context : &GlobalContext;
}
+bool DebugDraw::CanClear(void* context)
+{
+ if (!context)
+ context = &GlobalContext;
+ return ((DebugDrawContext*)context)->Count() != 0;
+}
+
#endif
Vector3 DebugDraw::GetViewPos()
diff --git a/Source/Engine/Debug/DebugDraw.h b/Source/Engine/Debug/DebugDraw.h
index 84e223434..4bea47118 100644
--- a/Source/Engine/Debug/DebugDraw.h
+++ b/Source/Engine/Debug/DebugDraw.h
@@ -62,6 +62,13 @@ API_CLASS(Static) class FLAXENGINE_API DebugDraw
///
/// The context or null.
API_FUNCTION() static void SetContext(void* context);
+
+ ///
+ /// Checks if can clear all debug shapes displayed on screen. Can be used to disable this functionality when not needed for the user.
+ ///
+ /// The context.
+ /// True fi context can be cleared (has any shapes), otherwise false.
+ API_FUNCTION() static bool CanClear(void* context = nullptr);
#endif
// Gets the last view position when rendering the current context. Can be sued for custom culling or LODing when drawing more complex shapes.