// -------------------------------------------------------------------------------------------------------------------- // // Copyright (c) VRMADA, All rights reserved. // // -------------------------------------------------------------------------------------------------------------------- using System; using UltimateXR.Core; using UnityEditor; using UnityEngine; namespace UltimateXR.Editor.Sdks.Networking { /// /// SDK Locator for the Unity NetCode package. /// public sealed class UxrSdkLocatorUnityNetCode : UxrSdkLocator { #region Public Overrides UxrSdkLocator /// public override SupportType Support => SupportType.Networking; /// public override string PackageName => "com.unity.netcode.gameobjects"; /// public override string Name => UxrConstants.SdkUnityNetCode; /// public override string MinimumUnityVersion => "2020.3"; /// public override string[] AvailableSymbols { get { if (CurrentState == State.Available) { if (CurrentVersion == 0) { return new[] { "ULTIMATEXR_USE_UNITY_NETCODE" }; } } return Array.Empty(); } } /// public override string[] AllSymbols { get { return new[] { "ULTIMATEXR_USE_UNITY_NETCODE" }; } } /// public override bool CanBeUpdated => true; /// public override void TryLocate() { // UltimateXR assembly already sets up version define for the Unity NetCode package #if ULTIMATEXR_USE_UNITY_NETCODE CurrentVersion = 0; CurrentState = State.Available; #else CurrentState = State.NotInstalled; #endif } /// public override void TryGet() { Application.OpenURL("https://docs-multiplayer.unity3d.com/netcode/current/installation/"); } /// public override void TryUpdate() { TryGet(); } #endregion #region Public Methods /// /// Auto-registers the locator each time Unity is launched or the project folder is updated. /// [InitializeOnLoadMethod] public static void RegisterLocator() { UxrSdkManager.RegisterLocator(new UxrSdkLocatorUnityNetCode()); } #endregion #region Private Methods /// /// Allows to remove dependencies from the project in case the user removed SDK folders manually. /// [MenuItem(UxrConstants.Editor.MenuPathSdksNetworking + "Remove Symbols for Unity NetCode", priority = UxrConstants.Editor.PriorityMenuPathSdksNetworking)] private static void RemoveSymbols() { UxrSdkManager.RemoveSymbols(new UxrSdkLocatorUnityNetCode()); } #endregion } }