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
|