BITFALL/Assets/GSpawn - Level Designer/Scripts/Level Design/Object Erase/ObjectEraseUI.cs

103 lines
5.9 KiB
C#

#if UNITY_EDITOR
using UnityEngine;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
namespace GSpawn
{
public class ObjectEraseUI : PluginUI
{
private ToolbarButton _objectEraseCursorBtn;
private ToolbarButton _objectEraseBrush2DBtn;
private ToolbarButton _objectEraseBrush3DBtn;
[SerializeField]
private UISection _eraseMaskSection;
[SerializeField]
private UISection _eraseCursorSettingsSection;
[SerializeField]
private UISection _eraseBrush2DSettingsSection;
[SerializeField]
private UISection _eraseBrush3DSettingsSection;
public static ObjectEraseUI instance { get { return GSpawn.active.objectEraseUI; } }
protected override void onRefresh()
{
refreshObjectEraseToolsButtons();
}
protected override void onBuild()
{
var toolbarContainer = new VisualElement();
toolbarContainer.style.flexDirection = FlexDirection.Row;
contentContainer.Add(toolbarContainer);
Toolbar toolbar = UI.createToolSelectionToolbar(toolbarContainer);
_objectEraseCursorBtn = UI.createToolbarButton(TexturePool.instance.objectEraseCursor, UI.ButtonStyle.Push, UIValues.mediumToolbarButtonSize, toolbar);
UI.useDefaultMargins(_objectEraseCursorBtn);
_objectEraseCursorBtn.style.marginTop = 1.0f;
_objectEraseCursorBtn.clicked += () => { ObjectErase.instance.activeToolId = ObjectEraseToolId.Cursor; };
_objectEraseBrush2DBtn = UI.createToolbarButton(TexturePool.instance.objectEraseBrush2D, UI.ButtonStyle.Push, UIValues.mediumToolbarButtonSize, toolbar);
UI.useDefaultMargins(_objectEraseBrush2DBtn);
_objectEraseBrush2DBtn.style.marginTop = 1.0f;
_objectEraseBrush2DBtn.clicked += () => { ObjectErase.instance.activeToolId = ObjectEraseToolId.Brush2D; };
_objectEraseBrush3DBtn = UI.createToolbarButton(TexturePool.instance.objectEraseBrush3D, UI.ButtonStyle.Push, UIValues.mediumToolbarButtonSize, toolbar);
UI.useDefaultMargins(_objectEraseBrush3DBtn);
_objectEraseBrush3DBtn.style.marginTop = 1.0f;
_objectEraseBrush3DBtn.clicked += () => { ObjectErase.instance.activeToolId = ObjectEraseToolId.Brush3D; };
refreshObjectEraseToolsButtons();
_eraseMaskSection.build("Erase Mask", null, true, contentContainer);
ObjectErase.instance.eraseMask.buildUI(_eraseMaskSection.contentContainer, "");
UI.createUISectionRowSeparator(contentContainer);
_eraseCursorSettingsSection.build("Erase Cursor", TexturePool.instance.objectEraseCursor, true, contentContainer);
ObjectErase.instance.eraseCursorSettings.buildUI(_eraseCursorSettingsSection.contentContainer);
UI.createUISectionRowSeparator(contentContainer);
_eraseBrush2DSettingsSection.build("Erase Brush 2D", TexturePool.instance.objectEraseBrush2D, true, contentContainer);
ObjectErase.instance.eraseBrush2DSettings.buildUI(_eraseBrush2DSettingsSection.contentContainer);
UI.createUISectionRowSeparator(contentContainer);
_eraseBrush3DSettingsSection.build("Erase Brush 3D", TexturePool.instance.objectEraseBrush3D, true, contentContainer);
ObjectErase.instance.eraseBrush3DSettings.buildUI(_eraseBrush3DSettingsSection.contentContainer);
}
private void refreshObjectEraseToolsButtons()
{
_objectEraseCursorBtn.tooltip = "Erase Cursor" + ShortcutProfileDb.instance.activeProfile.getShortcutUITooltip(ObjectEraseShortcutNames.eraseCursor, "Erase objects using the mouse cursor.");
_objectEraseCursorBtn.style.backgroundColor = UIValues.inactiveButtonColor;
_objectEraseBrush2DBtn.tooltip = "Erase Brush 2D" + ShortcutProfileDb.instance.activeProfile.getShortcutUITooltip(ObjectEraseShortcutNames.eraseBrush2D, "Erase objects using a 2D brush.");
_objectEraseBrush2DBtn.style.backgroundColor = UIValues.inactiveButtonColor;
_objectEraseBrush3DBtn.tooltip = "Erase Brush 3D" + ShortcutProfileDb.instance.activeProfile.getShortcutUITooltip(ObjectEraseShortcutNames.eraseBrush3D, "Erase objects using a 3D brush.");
_objectEraseBrush3DBtn.style.backgroundColor = UIValues.inactiveButtonColor;
if (ObjectErase.instance.activeToolId == ObjectEraseToolId.Cursor) _objectEraseCursorBtn.style.backgroundColor = UIValues.activeButtonColor;
else if (ObjectErase.instance.activeToolId == ObjectEraseToolId.Brush2D) _objectEraseBrush2DBtn.style.backgroundColor = UIValues.activeButtonColor;
else if (ObjectErase.instance.activeToolId == ObjectEraseToolId.Brush3D) _objectEraseBrush3DBtn.style.backgroundColor = UIValues.activeButtonColor;
}
protected override void onEnabled()
{
if (_eraseMaskSection == null) _eraseMaskSection = ScriptableObject.CreateInstance<UISection>();
if (_eraseCursorSettingsSection == null) _eraseCursorSettingsSection = ScriptableObject.CreateInstance<UISection>();
if (_eraseBrush2DSettingsSection == null) _eraseBrush2DSettingsSection = ScriptableObject.CreateInstance<UISection>();
if (_eraseBrush3DSettingsSection == null) _eraseBrush3DSettingsSection = ScriptableObject.CreateInstance<UISection>();
}
protected override void onDestroy()
{
ScriptableObjectEx.destroyImmediate(_eraseMaskSection);
ScriptableObjectEx.destroyImmediate(_eraseCursorSettingsSection);
ScriptableObjectEx.destroyImmediate(_eraseBrush2DSettingsSection);
ScriptableObjectEx.destroyImmediate(_eraseBrush3DSettingsSection);
}
}
}
#endif