#if UNITY_EDITOR using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Convai.Scripts.Runtime.LoggerSystem; using UnityEditor; using UnityEditor.Build; using UnityEditor.PackageManager; using UnityEditor.PackageManager.Requests; using UnityEngine; using UnityEngine.UIElements; using PackageInfo = UnityEditor.PackageManager.PackageInfo; namespace Convai.Scripts.Editor.CustomPackage { public class ConvaiCustomPackageInstaller : IActiveBuildTargetChanged { #region Constants // XR Package Paths private const string AR_PACKAGE_PATH = "Assets/Convai/Custom Packages/ConvaiARUpgrader.unitypackage"; private const string VR_PACKAGE_PATH = "Assets/Convai/Custom Packages/ConvaiVRUpgrader.unitypackage"; private const string MR_PACKAGE_PATH = "Assets/Convai/Custom Packages/ConvaiMRUpgrader.unitypackage"; private const string XR_PACKAGE_PATH = "Assets/Convai/Custom Packages/ConvaiXR.unitypackage"; private const string XR_PREFAB_PATH = "Assets/Convai/ConvaiXR/Prefabs/Convai Essentials - XR.prefab"; // Other Package Paths private const string IOS_BUILD_PACKAGE_PATH = "Assets/Convai/Custom Packages/ConvaiiOSBuild.unitypackage"; private const string URP_CONVERTER_PACKAGE_PATH = "Assets/Convai/Custom Packages/ConvaiURPConverter.unitypackage"; private const string TMP_PACKAGE_PATH = "Assets/Convai/Custom Packages/ConvaiCustomTMP.unitypackage"; #endregion #region Fields private SetupTypes _currentSetup; private List _setupSteps; private int _totalSetupSteps; private int _currentStep = 0; private string _currentStepDescription = ""; private bool _assembliesLocked = false; private BuildTarget _selectedARPlatform; private InstallationType _installationType; public int callbackOrder { get; } #endregion #region Enums private enum SetupTypes { AR, VR, MR, iOS, NormalUnityPackage } private enum InstallationType { Automatic, Manual } #endregion #region Constructor public ConvaiCustomPackageInstaller() { } public ConvaiCustomPackageInstaller(VisualElement root = null) { if (root != null) { InitializeUI(root); } } #endregion #region UI Initialization private void InitializeUI(VisualElement root) { root.Q