Files
modular-vr/Assets/Engine/Runtime/Editor/EngineEditor.cs

91 lines
2.9 KiB
C#

using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
namespace EscapeRoomEngine.Engine.Runtime.Editor
{
#if UNITY_EDITOR
public class EngineEditor : EditorWindow
{
private bool _registeredUpdateEvent;
private Button _passToNextRoomButton, _skipCurrentRoomButton, _skipAndPassButton;
[MenuItem("Window/Engine Editor")]
public static void ShowEditor()
{
var window = GetWindow<EngineEditor>();
window.titleContent = new GUIContent("Engine Editor");
}
public void CreateGUI()
{
_passToNextRoomButton = new Button(PassToNextRoom)
{
text = "Pass To Next Room"
};
rootVisualElement.Add(_passToNextRoomButton);
_skipCurrentRoomButton = new Button(SkipCurrentRoom)
{
text = "Skip Current Room"
};
rootVisualElement.Add(_skipCurrentRoomButton);
_skipAndPassButton = new Button(SkipAndPass)
{
text = "Skip Current And Pass To Next Room"
};
rootVisualElement.Add(_skipAndPassButton);
EditorApplication.playModeStateChanged += _ => UpdateUI();
UpdateUI();
}
private void PassToNextRoom()
{
if (EditorApplication.isPlaying)
{
Engine.DefaultEngine.CurrentRoom.Match(some: room => room.EnterRoom());
UpdateUI();
}
}
private void SkipCurrentRoom()
{
if (EditorApplication.isPlaying)
{
Engine.DefaultEngine.CurrentRoom.Match(some: room => room.SkipRoom());
UpdateUI();
}
}
private void SkipAndPass()
{
if (EditorApplication.isPlaying)
{
Engine.DefaultEngine.CurrentRoom.Match(some: room => room.SkipRoom());
Engine.DefaultEngine.CurrentRoom.Match(some: room => room.EnterRoom());
UpdateUI();
}
}
private void UpdateUI()
{
if (EditorApplication.isPlaying)
{
if (!_registeredUpdateEvent)
{
Engine.DefaultEngine.UpdateUIEvent += UpdateUI;
_registeredUpdateEvent = true;
}
}
else
{
_registeredUpdateEvent = false;
}
_passToNextRoomButton.SetEnabled(EditorApplication.isPlaying && Engine.DefaultEngine.NumberOfRooms > 1);
_skipCurrentRoomButton.SetEnabled(EditorApplication.isPlaying && Engine.DefaultEngine.NumberOfRooms > 0);
_skipAndPassButton.SetEnabled(EditorApplication.isPlaying && Engine.DefaultEngine.NumberOfRooms > 0);
}
}
#endif
}