Add separate GBuffer view modes in Editor viewport widget
This commit is contained in:
@@ -511,11 +511,26 @@ namespace FlaxEditor.Viewport
|
|||||||
var debugView = ViewWidgetButtonMenu.AddChildMenu("Debug View").ContextMenu;
|
var debugView = ViewWidgetButtonMenu.AddChildMenu("Debug View").ContextMenu;
|
||||||
for (int i = 0; i < EditorViewportViewModeValues.Length; i++)
|
for (int i = 0; i < EditorViewportViewModeValues.Length; i++)
|
||||||
{
|
{
|
||||||
var v = EditorViewportViewModeValues[i];
|
ref var v = ref EditorViewportViewModeValues[i];
|
||||||
var button = debugView.AddButton(v.Name);
|
if (v.Options != null)
|
||||||
button.Tag = v.Mode;
|
{
|
||||||
|
var childMenu = debugView.AddChildMenu(v.Name).ContextMenu;
|
||||||
|
childMenu.ButtonClicked += WidgetViewModeShowHideClicked;
|
||||||
|
childMenu.VisibleChanged += WidgetViewModeShowHide;
|
||||||
|
for (int j = 0; j < v.Options.Length; j++)
|
||||||
|
{
|
||||||
|
ref var vv = ref v.Options[j];
|
||||||
|
var button = childMenu.AddButton(vv.Name);
|
||||||
|
button.Tag = vv.Mode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var button = debugView.AddButton(v.Name);
|
||||||
|
button.Tag = v.Mode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
debugView.ButtonClicked += button => Task.ViewMode = (ViewMode)button.Tag;
|
debugView.ButtonClicked += WidgetViewModeShowHideClicked;
|
||||||
debugView.VisibleChanged += WidgetViewModeShowHide;
|
debugView.VisibleChanged += WidgetViewModeShowHide;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1382,13 +1397,22 @@ namespace FlaxEditor.Viewport
|
|||||||
|
|
||||||
private struct ViewModeOptions
|
private struct ViewModeOptions
|
||||||
{
|
{
|
||||||
public readonly ViewMode Mode;
|
|
||||||
public readonly string Name;
|
public readonly string Name;
|
||||||
|
public readonly ViewMode Mode;
|
||||||
|
public readonly ViewModeOptions[] Options;
|
||||||
|
|
||||||
public ViewModeOptions(ViewMode mode, string name)
|
public ViewModeOptions(ViewMode mode, string name)
|
||||||
{
|
{
|
||||||
Mode = mode;
|
Mode = mode;
|
||||||
Name = name;
|
Name = name;
|
||||||
|
Options = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ViewModeOptions(string name, ViewModeOptions[] options)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
Mode = ViewMode.Default;
|
||||||
|
Options = options;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1401,16 +1425,19 @@ namespace FlaxEditor.Viewport
|
|||||||
new ViewModeOptions(ViewMode.LightBuffer, "Light Buffer"),
|
new ViewModeOptions(ViewMode.LightBuffer, "Light Buffer"),
|
||||||
new ViewModeOptions(ViewMode.Reflections, "Reflections Buffer"),
|
new ViewModeOptions(ViewMode.Reflections, "Reflections Buffer"),
|
||||||
new ViewModeOptions(ViewMode.Depth, "Depth Buffer"),
|
new ViewModeOptions(ViewMode.Depth, "Depth Buffer"),
|
||||||
new ViewModeOptions(ViewMode.Diffuse, "Diffuse"),
|
new ViewModeOptions("GBuffer", new[]
|
||||||
new ViewModeOptions(ViewMode.Metalness, "Metalness"),
|
{
|
||||||
new ViewModeOptions(ViewMode.Roughness, "Roughness"),
|
new ViewModeOptions(ViewMode.Diffuse, "Diffuse"),
|
||||||
new ViewModeOptions(ViewMode.Specular, "Specular"),
|
new ViewModeOptions(ViewMode.Metalness, "Metalness"),
|
||||||
new ViewModeOptions(ViewMode.SpecularColor, "Specular Color"),
|
new ViewModeOptions(ViewMode.Roughness, "Roughness"),
|
||||||
new ViewModeOptions(ViewMode.SubsurfaceColor, "Subsurface Color"),
|
new ViewModeOptions(ViewMode.Specular, "Specular"),
|
||||||
new ViewModeOptions(ViewMode.ShadingModel, "Shading Model"),
|
new ViewModeOptions(ViewMode.SpecularColor, "Specular Color"),
|
||||||
new ViewModeOptions(ViewMode.Emissive, "Emissive Light"),
|
new ViewModeOptions(ViewMode.SubsurfaceColor, "Subsurface Color"),
|
||||||
new ViewModeOptions(ViewMode.Normals, "Normals"),
|
new ViewModeOptions(ViewMode.ShadingModel, "Shading Model"),
|
||||||
new ViewModeOptions(ViewMode.AmbientOcclusion, "Ambient Occlusion"),
|
new ViewModeOptions(ViewMode.Emissive, "Emissive Light"),
|
||||||
|
new ViewModeOptions(ViewMode.Normals, "Normals"),
|
||||||
|
new ViewModeOptions(ViewMode.AmbientOcclusion, "Ambient Occlusion"),
|
||||||
|
}),
|
||||||
new ViewModeOptions(ViewMode.MotionVectors, "Motion Vectors"),
|
new ViewModeOptions(ViewMode.MotionVectors, "Motion Vectors"),
|
||||||
new ViewModeOptions(ViewMode.LightmapUVsDensity, "Lightmap UVs Density"),
|
new ViewModeOptions(ViewMode.LightmapUVsDensity, "Lightmap UVs Density"),
|
||||||
new ViewModeOptions(ViewMode.VertexColors, "Vertex Colors"),
|
new ViewModeOptions(ViewMode.VertexColors, "Vertex Colors"),
|
||||||
@@ -1441,6 +1468,12 @@ namespace FlaxEditor.Viewport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WidgetViewModeShowHideClicked(ContextMenuButton button)
|
||||||
|
{
|
||||||
|
if (button.Tag is ViewMode v)
|
||||||
|
Task.ViewMode = v;
|
||||||
|
}
|
||||||
|
|
||||||
private void WidgetViewModeShowHide(Control cm)
|
private void WidgetViewModeShowHide(Control cm)
|
||||||
{
|
{
|
||||||
if (cm.Visible == false)
|
if (cm.Visible == false)
|
||||||
@@ -1449,13 +1482,8 @@ namespace FlaxEditor.Viewport
|
|||||||
var ccm = (ContextMenu)cm;
|
var ccm = (ContextMenu)cm;
|
||||||
foreach (var e in ccm.Items)
|
foreach (var e in ccm.Items)
|
||||||
{
|
{
|
||||||
if (e is ContextMenuButton b)
|
if (e is ContextMenuButton b && b.Tag is ViewMode v)
|
||||||
{
|
b.Icon = Task.View.Mode == v ? Style.Current.CheckBoxTick : SpriteHandle.Invalid;
|
||||||
var v = (ViewMode)b.Tag;
|
|
||||||
b.Icon = Task.View.Mode == v
|
|
||||||
? Style.Current.CheckBoxTick
|
|
||||||
: SpriteHandle.Invalid;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user