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; | |||
|  | 		} | |||
|  | 	} | |||
|  | } |