62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| using UnityEditor;
 | |
| using ES3Internal;
 | |
| using System.Linq;
 | |
| 
 | |
| namespace ES3Editor
 | |
| {
 | |
| 	public class AddES3Prefab : Editor 
 | |
| 	{
 | |
|         [MenuItem("GameObject/Easy Save 3/Enable Easy Save for Prefab(s)", false, 1001)]
 | |
|         [MenuItem("Assets/Easy Save 3/Enable Easy Save for Prefab(s)", false, 1001)]
 | |
|         public static void Enable()
 | |
|         {
 | |
|             if (Selection.gameObjects == null || Selection.gameObjects.Length == 0)
 | |
|                 return;
 | |
| 
 | |
|             foreach (var obj in Selection.gameObjects)
 | |
|             {
 | |
|                 // Don't add the Component to a GameObject which already has it.
 | |
|                 if (obj == null  || (obj.GetComponent<ES3Prefab>() != null))
 | |
|                     continue;
 | |
| 
 | |
|                 var go = obj;
 | |
| 
 | |
|                 #if UNITY_2018_3_OR_NEWER
 | |
|                 if (PrefabUtility.GetPrefabInstanceStatus(go) != PrefabInstanceStatus.NotAPrefab)
 | |
|                 {
 | |
|                     go = (GameObject)PrefabUtility.GetCorrespondingObjectFromSource(go);
 | |
|                     if (go == null)
 | |
|                         continue;
 | |
|                 }
 | |
|                 #else
 | |
| 			    if(PrefabUtility.GetPrefabType(go) != PrefabType.Prefab)
 | |
| 			    {
 | |
| 				    go = (GameObject)PrefabUtility.GetPrefabParent(go);
 | |
| 				    if(go == null)
 | |
| 					    continue;
 | |
| 			    }
 | |
|                 #endif
 | |
| 
 | |
|                 var es3Prefab = Undo.AddComponent<ES3Prefab>(go);
 | |
|                 es3Prefab.GeneratePrefabReferences();
 | |
| 
 | |
|                 if (ES3ReferenceMgr.Current != null)
 | |
|                 {
 | |
|                     ES3ReferenceMgr.Current.AddPrefab(es3Prefab);
 | |
|                     EditorUtility.SetDirty(ES3ReferenceMgr.Current);
 | |
|                 }
 | |
|             }
 | |
| 		}
 | |
| 
 | |
| 		[MenuItem("GameObject/Easy Save 3/Enable Easy Save for Prefab", true, 1001)]
 | |
| 		[MenuItem("Assets/Easy Save 3/Enable Easy Save for Prefab", true, 1001)]
 | |
| 		public static bool Validate()
 | |
| 		{
 | |
|             return Selection.gameObjects != null && Selection.gameObjects.Length > 0;
 | |
| 		}
 | |
| 	}
 | |
| }
 |