#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
namespace Michsky.UI.Reach
{
public class ToolsMenu : Editor
{
static string objectPath;
static void GetObjectPath()
{
objectPath = AssetDatabase.GetAssetPath(Resources.Load("Reach UI Manager"));
objectPath = objectPath.Replace("Resources/Reach UI Manager.asset", "").Trim();
objectPath = objectPath + "Prefabs/";
}
static void MakeSceneDirty(GameObject source, string sourceName)
{
if (Application.isPlaying == false)
{
Undo.RegisterCreatedObjectUndo(source, sourceName);
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}
}
static void ShowErrorDialog()
{
EditorUtility.DisplayDialog("Reach UI", "Cannot create the object due to missing manager file. " +
"Make sure you have 'Reach UI Manager' file in Reach UI > Resources folder.", "Dismiss");
}
static void UpdateCustomEditorPath()
{
string darkPath = AssetDatabase.GetAssetPath(Resources.Load("ReachEditor-Dark"));
string lightPath = AssetDatabase.GetAssetPath(Resources.Load("ReachEditor-Light"));
EditorPrefs.SetString("ReachUI.CustomEditorDark", darkPath);
EditorPrefs.SetString("ReachUI.CustomEditorLight", lightPath);
}
[MenuItem("Tools/Reach UI/Show UI Manager %#M")]
static void ShowManager()
{
Selection.activeObject = Resources.Load("Reach UI Manager");
if (Selection.activeObject == null)
Debug.Log("[Reach UI]Can't find an asset called 'Reach UI Manager'. Make sure you have 'Reach UI Manager' in: Reach UI > Editor > Resources");
}
static void CreateObject(string resourcePath)
{
try
{
GetObjectPath();
UpdateCustomEditorPath();
GameObject clone = Instantiate(AssetDatabase.LoadAssetAtPath(objectPath + resourcePath + ".prefab", typeof(GameObject)), Vector3.zero, Quaternion.identity) as GameObject;
try
{
if (Selection.activeGameObject == null)
{
#if UNITY_2023_2_OR_NEWER
var canvas = FindObjectsByType