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