Unity-WebSocket/Assets/FishNet/Runtime/Editor/Configuring/BetaModeMenu.cs
2025-06-28 11:28:54 +03:30

77 lines
3.2 KiB
C#

#if UNITY_EDITOR
using FishNet.Editing.PrefabCollectionGenerator;
using FishNet.Object;
using FishNet.Utility.Extension;
using GameKit.Dependencies.Utilities;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace FishNet.Editing.Beta
{
public class BetaModeMenu : MonoBehaviour
{
#region const.
private const string STABLE_SYNCTYPES_DEFINE = "FISHNET_STABLE_SYNCTYPES";
private const string STABLE_REPLICATESTATES_DEFINE = "FISHNET_STABLE_REPLICATESTATES";
private const string STABLE_RECURSIVE_DESPAWNS_DEFINE = "FISHNET_STABLE_RECURSIVE_DESPAWNS";
#endregion
#region Beta SyncTypes
#if FISHNET_STABLE_SYNCTYPES
[MenuItem("Tools/Fish-Networking/Beta/Enable for SyncTypes", false, -1101)]
private static void EnableBetaSyncTypes() => SetBetaSyncTypes(useStable: false);
#else
[MenuItem("Tools/Fish-Networking/Beta/Disable for SyncTypes", false, -1101)]
private static void DisableBetaSyncTypes() => SetBetaSyncTypes(useStable: true);
#endif
private static void SetBetaSyncTypes(bool useStable)
{
bool result = DeveloperMenu.RemoveOrAddDefine(STABLE_SYNCTYPES_DEFINE, removeDefine: !useStable);
if (result)
Debug.LogWarning($"Beta SyncTypes are now {GetBetaEnabledText(useStable)}.");
}
#endregion
#region Beta Recursive Despawns
#if FISHNET_STABLE_RECURSIVE_DESPAWNS
[MenuItem("Tools/Fish-Networking/Beta/Enable for Recursive Despawns", false, -1101)]
private static void EnableBetaRecursiveDespawns() => SetBetaRecursiveDespawns(useStable: false);
#else
[MenuItem("Tools/Fish-Networking/Beta/Disable for Recursive Despawns", false, -1101)]
private static void DisableBetaRecursiveDespawns() => SetBetaRecursiveDespawns(useStable: true);
#endif
private static void SetBetaRecursiveDespawns(bool useStable)
{
bool result = DeveloperMenu.RemoveOrAddDefine(STABLE_RECURSIVE_DESPAWNS_DEFINE, removeDefine: !useStable);
if (result)
Debug.LogWarning($"Beta Recursive Despawns are now {GetBetaEnabledText(useStable)}.");
}
#endregion
#region Beta ReplicateStates
#if FISHNET_STABLE_REPLICATESTATES
[MenuItem("Tools/Fish-Networking/Beta/Enable for ReplicateStates", false, -1101)]
private static void EnableBetaReplicateStates() => SetBetaReplicateStates(useStable: false);
#else
[MenuItem("Tools/Fish-Networking/Beta/Disable for ReplicateStates", false, -1101)]
private static void DisableBetaReplicateStates() => SetBetaReplicateStates(useStable: true);
#endif
private static void SetBetaReplicateStates(bool useStable)
{
bool result = DeveloperMenu.RemoveOrAddDefine(STABLE_REPLICATESTATES_DEFINE, removeDefine: !useStable);
if (result)
Debug.LogWarning($"Beta ReplicateStates are now {GetBetaEnabledText(useStable)}.");
}
#endregion
private static string GetBetaEnabledText(bool useStable)
{
return (useStable) ? "disabled" : "enabled";
}
}
}
#endif