61 lines
1.9 KiB
C#
61 lines
1.9 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using ES3Internal;
|
|
|
|
public class ES3EditorUtility : Editor
|
|
{
|
|
public static void DisplayLink(string label, string url)
|
|
{
|
|
var style = ES3Editor.EditorStyle.Get;
|
|
if(GUILayout.Button(label, style.link))
|
|
Application.OpenURL(url);
|
|
|
|
var buttonRect = GUILayoutUtility.GetLastRect();
|
|
buttonRect.width = style.link.CalcSize(new GUIContent(label)).x;
|
|
|
|
EditorGUIUtility.AddCursorRect(buttonRect, MouseCursor.Link);
|
|
}
|
|
|
|
public static bool IsPrefabInAssets(UnityEngine.Object obj)
|
|
{
|
|
#if UNITY_2018_3_OR_NEWER
|
|
return PrefabUtility.IsPartOfPrefabAsset(obj);
|
|
#else
|
|
return (PrefabUtility.GetPrefabType(obj) == PrefabType.Prefab);
|
|
#endif
|
|
}
|
|
|
|
/*
|
|
* Gets all children and components from a GameObject or GameObjects.
|
|
* We create our own method for this because EditorUtility.CollectDeepHierarchy isn't thread safe in the Editor.
|
|
*/
|
|
public static IEnumerable<UnityEngine.Object> CollectDeepHierarchy(IEnumerable<GameObject> gos)
|
|
{
|
|
var deepHierarchy = new HashSet<UnityEngine.Object>();
|
|
foreach (var go in gos)
|
|
{
|
|
deepHierarchy.Add(go);
|
|
deepHierarchy.UnionWith(go.GetComponents<Component>());
|
|
foreach (Transform t in go.transform)
|
|
deepHierarchy.UnionWith( CollectDeepHierarchy( new GameObject[] { t.gameObject } ) );
|
|
}
|
|
return deepHierarchy;
|
|
}
|
|
|
|
[MenuItem("Tools/Easy Save 3/Getting Started...", false, 0)]
|
|
public static void DisplayGettingStarted()
|
|
{
|
|
Application.OpenURL("https://docs.moodkie.com/easy-save-3/getting-started/");
|
|
}
|
|
|
|
[MenuItem("Tools/Easy Save 3/Manual...", false, 0)]
|
|
public static void DisplayManual()
|
|
{
|
|
Application.OpenURL("https://docs.moodkie.com/product/easy-save-3/");
|
|
}
|
|
}
|