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/");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |