private void SetupLoader <T>(XRGeneralSettings xrGeneralSettings, XRGeneralSettingsPerBuildTarget buildTargetSettings, XRManagerSettings managerSettings) where T : XRLoader { var loader = ScriptableObject.CreateInstance <T>(); if (loader == null) { throw new ArgumentNullException( $"Tried to instantiate an instance of {typeof(T).Name}, but it is null."); } loader.name = loader.GetType().Name; xrGeneralSettings.Manager.loaders.Add(loader); buildTargetSettings.SetSettingsForBuildTarget(EditorUserBuildSettings.selectedBuildTargetGroup, xrGeneralSettings); EnsureXrGeneralSettingsPathExists(xrsdkTestXrSettingsPath); AssetDatabase.CreateAsset(buildTargetSettings, xrsdkTestXrSettingsPath); AssetDatabase.AddObjectToAsset(xrGeneralSettings, xrsdkTestXrSettingsPath); AssetDatabase.AddObjectToAsset(managerSettings, xrsdkTestXrSettingsPath); AssetDatabase.AddObjectToAsset(loader, xrsdkTestXrSettingsPath); }
public static void SetXRLoaderEnabled(string loaderClassName, BuildTargetGroup buildTargetGroup, bool enabled) { #if VIU_XR_GENERAL_SETTINGS MethodInfo method = Type.GetType("UnityEditor.XR.Management.XRSettingsManager, Unity.XR.Management.Editor") .GetProperty("currentSettings", BindingFlags.NonPublic | BindingFlags.Static).GetGetMethod(true); XRGeneralSettingsPerBuildTarget generalSettings = (XRGeneralSettingsPerBuildTarget)method.Invoke(null, new object[] {}); XRGeneralSettings xrSettings = generalSettings.SettingsForBuildTarget(buildTargetGroup); if (xrSettings == null) { xrSettings = ScriptableObject.CreateInstance <XRGeneralSettings>() as XRGeneralSettings; generalSettings.SetSettingsForBuildTarget(buildTargetGroup, xrSettings); xrSettings.name = $"{buildTargetGroup.ToString()} Settings"; AssetDatabase.AddObjectToAsset(xrSettings, AssetDatabase.GetAssetOrScenePath(generalSettings)); } var serializedSettingsObject = new SerializedObject(xrSettings); SerializedProperty loaderProp = serializedSettingsObject.FindProperty("m_LoaderManagerInstance"); if (loaderProp.objectReferenceValue == null) { var xrManagerSettings = ScriptableObject.CreateInstance <XRManagerSettings>() as XRManagerSettings; xrManagerSettings.name = $"{buildTargetGroup.ToString()} Providers"; AssetDatabase.AddObjectToAsset(xrManagerSettings, AssetDatabase.GetAssetOrScenePath(generalSettings)); loaderProp.objectReferenceValue = xrManagerSettings; serializedSettingsObject.ApplyModifiedProperties(); } if (enabled) { #if VIU_XR_PACKAGE_METADATA_STORE if (!UnityEditor.XR.Management.Metadata.XRPackageMetadataStore.AssignLoader(xrSettings.AssignedSettings, loaderClassName, buildTargetGroup)) { Debug.LogWarning("Failed to assign XR loader: " + loaderClassName); } #else if (!AssignLoader(xrSettings.AssignedSettings, loaderClassName)) { Debug.LogWarning("Failed to assign XR loader: " + loaderClassName); } #endif } else { #if VIU_XR_PACKAGE_METADATA_STORE if (!UnityEditor.XR.Management.Metadata.XRPackageMetadataStore.RemoveLoader(xrSettings.AssignedSettings, loaderClassName, buildTargetGroup)) { Debug.LogWarning("Failed to remove XR loader: " + loaderClassName); } #else if (!RemoveLoader(xrSettings.AssignedSettings, loaderClassName)) { Debug.LogWarning("Failed to remove XR loader: " + loaderClassName); } #endif } #endif }
public virtual void SetupTest() { #if UNITY_EDITOR var windowTypes = TypeCache.GetTypesDerivedFrom(typeof(EditorWindow)); foreach (var wt in windowTypes) { if (wt.Name.Contains("ProjectSettingsWindow")) { var projectSettingsWindow = EditorWindow.GetWindow(wt); if (projectSettingsWindow != null) { projectSettingsWindow.Close(); } } } testPathToGeneralSettings = GetAssetPathForComponents(s_TestGeneralSettings); testPathToGeneralSettings = Path.Combine(testPathToGeneralSettings, "Test_XRGeneralSettingsPerBuildTarget.asset"); if (File.Exists(testPathToGeneralSettings)) { AssetDatabase.DeleteAsset(testPathToGeneralSettings); } buildTargetSettings = ScriptableObject.CreateInstance <XRGeneralSettingsPerBuildTarget>(); AssetDatabase.CreateAsset(buildTargetSettings, testPathToGeneralSettings); testPathToSettings = GetAssetPathForComponents(s_TempSettingsPath); testPathToSettings = Path.Combine(testPathToSettings, "Test_XRGeneralSettings.asset"); if (File.Exists(testPathToSettings)) { AssetDatabase.DeleteAsset(testPathToSettings); } testManager = ScriptableObject.CreateInstance <XRManagerSettings>(); xrGeneralSettings = ScriptableObject.CreateInstance <XRGeneralSettings>() as XRGeneralSettings; XRGeneralSettings.Instance = xrGeneralSettings; xrGeneralSettings.Manager = testManager; buildTargetSettings.SetSettingsForBuildTarget(BuildTargetGroup.Standalone, xrGeneralSettings); AssetDatabase.CreateAsset(xrGeneralSettings, testPathToSettings); AssetDatabase.AddObjectToAsset(testManager, xrGeneralSettings); AssetDatabase.SaveAssets(); EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, buildTargetSettings, true); #endif }
public void SetUp() { AssetDatabase.DeleteAsset("Assets/XR"); AssetDatabase.CreateFolder("Assets", "XR"); m_Settings = ScriptableObject.CreateInstance <XRManagerSettings>() as XRManagerSettings; m_Settings.name = "Actual testable settings."; m_TestSettings = ScriptableObject.CreateInstance <XRGeneralSettings>() as XRGeneralSettings; m_TestSettings.Manager = m_Settings; m_TestSettings.name = "Standalone Settings Container."; m_TestSettingsPerBuildTarget = ScriptableObject.CreateInstance <XRGeneralSettingsPerBuildTarget>() as XRGeneralSettingsPerBuildTarget; m_TestSettingsPerBuildTarget.SetSettingsForBuildTarget(BuildTargetGroup.Standalone, m_TestSettings); var testPath = XRGeneralSettingsTests.GetAssetPathForComponents(s_TempSettingsPath); if (!string.IsNullOrEmpty(testPath)) { AssetDatabase.CreateAsset(m_TestSettingsPerBuildTarget, Path.Combine(testPath, "Test_XRGeneralSettings.asset")); AssetDatabase.AddObjectToAsset(m_TestSettings, AssetDatabase.GetAssetOrScenePath(m_TestSettingsPerBuildTarget)); AssetDatabase.CreateFolder(testPath, "Settings"); testPath = Path.Combine(testPath, "Settings"); AssetDatabase.CreateAsset(m_Settings, Path.Combine(testPath, "Test_XRSettingsManager.asset")); m_TestSettings.AssignedSettings = m_Settings; AssetDatabase.SaveAssets(); } EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, m_TestSettingsPerBuildTarget, true); XRPackageInitializationBootstrap.BeginPackageInitialization(); TestPackage pkg = new TestPackage(); XRPackageMetadataStore.AddPluginPackage(pkg); XRPackageInitializationBootstrap.InitPackage(pkg); TestLoaderBase.WasAssigned = false; TestLoaderBase.WasUnassigned = false; }
public virtual void SetupTest() { testManager = ScriptableObject.CreateInstance <XRManagerSettings>(); xrGeneralSettings = ScriptableObject.CreateInstance <XRGeneralSettings>() as XRGeneralSettings; xrGeneralSettings.Manager = testManager; testPathToSettings = GetAssetPathForComponents(s_TempSettingsPath); testPathToSettings = Path.Combine(testPathToSettings, "Test_XRGeneralSettings.asset"); if (!string.IsNullOrEmpty(testPathToSettings)) { AssetDatabase.CreateAsset(xrGeneralSettings, testPathToSettings); if (!TestManagerUpgradePath) { AssetDatabase.AddObjectToAsset(testManager, xrGeneralSettings); } AssetDatabase.SaveAssets(); } testPathToGeneralSettings = GetAssetPathForComponents(s_TestGeneralSettings); testPathToGeneralSettings = Path.Combine(testPathToGeneralSettings, "Test_XRGeneralSettingsPerBuildTarget.asset"); buildTargetSettings = ScriptableObject.CreateInstance <XRGeneralSettingsPerBuildTarget>(); buildTargetSettings.SetSettingsForBuildTarget(BuildTargetGroup.Standalone, xrGeneralSettings); if (!string.IsNullOrEmpty(testPathToSettings)) { AssetDatabase.CreateAsset(buildTargetSettings, testPathToGeneralSettings); AssetDatabase.SaveAssets(); EditorBuildSettings.TryGetConfigObject(XRGeneralSettings.k_SettingsKey, out currentSettings); EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, buildTargetSettings, true); } }