76 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| #if UNITY_EDITOR
 | |
| using FishNet.Documenting;
 | |
| using System.Collections.Generic;
 | |
| using UnityEditor;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace FishNet.Upgrading.Mirror.Editing
 | |
| {
 | |
| 
 | |
|     /* IMPORTANT IMPORTANT IMPORTANT IMPORTANT 
 | |
|     * If you receive errors about missing Mirror components,
 | |
|     * such as NetworkIdentity, then remove MIRROR and any other
 | |
|     * MIRROR defines.
 | |
|     * Project Settings -> Player -> Other -> Scripting Define Symbols.
 | |
|     * 
 | |
|     * If you are also using my assets add FGG_ASSETS to the defines, and
 | |
|     * then remove it after running this script. */
 | |
|     [APIExclude]
 | |
|     public class UpgradeFromMirrorMenu : MonoBehaviour
 | |
|     {
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Replaces all components.
 | |
|         /// </summary>
 | |
|         [MenuItem("Fish-Networking/Upgrading/From Mirror/Replace Components", false,2)]
 | |
|         private static void ReplaceComponents()
 | |
|         {
 | |
| #if MIRROR
 | |
|             MirrorUpgrade result = GameObject.FindObjectOfType<MirrorUpgrade>();
 | |
|             if (result != null)
 | |
|             {
 | |
|                 Debug.LogError("MirrorUpgrade already exist in the scene. This suggests an operation is currently running.");
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             GameObject iteratorGo = new GameObject();
 | |
|             iteratorGo.AddComponent<MirrorUpgrade>();
 | |
| #else
 | |
|             Debug.LogError("Mirror must be imported to perform this function.");
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         [MenuItem("Fish-Networking/Upgrading/From Mirror/Remove Defines", false, 2)]
 | |
|         private static void RemoveDefines()
 | |
|         {
 | |
|             string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
 | |
|             /* Convert current defines into a hashset. This is so we can
 | |
|              * determine if any of our defines were added. Only save playersettings
 | |
|              * when a define is added. */
 | |
|             HashSet<string> definesHs = new HashSet<string>();
 | |
|             string[] currentArr = currentDefines.Split(';');
 | |
| 
 | |
|             bool removed = false;
 | |
|             //Add any define which doesn't contain MIRROR.
 | |
|             foreach (string item in currentArr)
 | |
|             {
 | |
|                 string itemLower = item.ToLower();
 | |
|                 if (itemLower != "mirror" && !itemLower.StartsWith("mirror_"))
 | |
|                     definesHs.Add(item);
 | |
|                 else
 | |
|                     removed = true;
 | |
|             }
 | |
| 
 | |
|             if (removed)
 | |
|             {
 | |
|                 Debug.Log("Removed Mirror defines to player settings.");
 | |
|                 string changedDefines = string.Join(";", definesHs);
 | |
|                 PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, changedDefines);
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|     }
 | |
| }
 | |
| #endif
 |