Files
Nitrox/NitroxClient/Debuggers/Drawer/UnityUI/CanvasDrawer.cs
2025-07-06 00:23:46 +02:00

112 lines
4.6 KiB
C#

using System;
using NitroxModel.Helper;
using UnityEngine;
namespace NitroxClient.Debuggers.Drawer.UnityUI;
public class CanvasDrawer : IDrawer<Canvas>
{
private readonly SceneDebugger sceneDebugger;
public CanvasDrawer(SceneDebugger sceneDebugger)
{
Validate.NotNull(sceneDebugger);
this.sceneDebugger = sceneDebugger;
}
public void Draw(Canvas canvas)
{
RenderMode renderMode = canvas.renderMode;
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Raycast Target", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
renderMode = NitroxGUILayout.EnumPopup(renderMode);
}
if (renderMode == RenderMode.WorldSpace)
{
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Event Camera", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
if (GUILayout.Button("Jump to", GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)))
{
sceneDebugger.UpdateSelectedObject(canvas.worldCamera.gameObject);
}
}
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Sorting layer", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
canvas.sortingLayerID = NitroxGUILayout.IntField(canvas.sortingLayerID);
}
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Order in Layer", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
canvas.sortingOrder = NitroxGUILayout.IntField(canvas.sortingOrder);
}
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Additional Shader Channels", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
canvas.additionalShaderChannels = NitroxGUILayout.EnumPopup(canvas.additionalShaderChannels);
}
}
else
{
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Pixel Perfect", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
canvas.pixelPerfect = NitroxGUILayout.BoolField(canvas.pixelPerfect);
}
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Sort Order", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
canvas.sortingOrder = NitroxGUILayout.IntField(canvas.sortingOrder);
}
if (renderMode == RenderMode.ScreenSpaceOverlay)
{
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Target Display", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
int newTargetDisplay = NitroxGUILayout.IntField(canvas.targetDisplay);
canvas.targetDisplay = Math.Max(0, Math.Min(8, newTargetDisplay));
}
}
else
{
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Render Camera", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
if (GUILayout.Button("Jump to", GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)))
{
sceneDebugger.UpdateSelectedObject(canvas.worldCamera.gameObject);
}
}
if (canvas.worldCamera)
{
using (new GUILayout.HorizontalScope())
{
GUILayout.Label("Plane Distance", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH));
NitroxGUILayout.Separator();
canvas.planeDistance = NitroxGUILayout.FloatField(canvas.planeDistance);
}
}
}
}
}
}