#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
{
///
/// Replaces all components.
///
[MenuItem("Fish-Networking/Upgrading/From Mirror/Replace Components", false,2)]
private static void ReplaceComponents()
{
#if MIRROR
MirrorUpgrade result = GameObject.FindObjectOfType();
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();
#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 definesHs = new HashSet();
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