This repository has been archived on 2023-09-13. You can view files and clone it, but cannot push or open issues or pull requests.
station_obscurum_unity/Assets/FishNet/Upgrading/UpgradeFromMirrorMenu.cs

76 lines
2.7 KiB
C#
Raw Permalink Normal View History

2023-05-31 17:32:21 +02:00
#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