public void ValidationError() { bool errorFixed = false; // Set up a validation check ... MockRuntime.Instance.TestCallback = (s, o) => { if (s == "GetValidationChecks") { var validationChecks = o as List <OpenXRFeature.ValidationRule>; validationChecks?.Add(new OpenXRFeature.ValidationRule { message = "Mock Validation Fail", checkPredicate = () => errorFixed, fixIt = () => errorFixed = true, error = true }); } return(true); }; // Try to build the player ... var report = zBuildHookTests.BuildMockPlayer(); // It will fail because of the above validation issue ... Assert.AreEqual(BuildResult.Failed, report.summary.result); // There's one validation issue ... var validationIssues = new List <OpenXRFeature.ValidationRule>(); OpenXRProjectValidation.GetCurrentValidationIssues(validationIssues, BuildTargetGroup.Standalone); Assert.AreEqual(1, validationIssues.Count); // Fix it ... Assert.IsFalse(errorFixed); validationIssues[0].fixIt.Invoke(); Assert.IsTrue(errorFixed); // Now there's zero validation issues ... OpenXRProjectValidation.GetCurrentValidationIssues(validationIssues, BuildTargetGroup.Standalone); Assert.AreEqual(0, validationIssues.Count); // Close the validation window ... OpenXRProjectValidationWindow.CloseWindow(); }
public UnityXRRecommendedSettings() { #if VIU_OPENXR && VIU_XR_GENERAL_SETTINGS Add(new VIUVersionCheck.RecommendedSetting <int> { settingTitle = "Review OpenXR Project Validation Issues", skipCheckFunc = () => !VIUSettingsEditor.PackageManagerHelper.IsPackageInList(VIUSettingsEditor.OPENXR_PLUGIN_PACKAGE_NAME) || !XRPluginManagementUtils.IsXRLoaderEnabled(UnityXRModule.OPENXR_LOADER_NAME, VIUSettingsEditor.activeBuildTargetGroup), currentValueFunc = () => { OpenXRProjectValidation.GetCurrentValidationIssues(s_tempOpenXRValidationIssues, VIUSettingsEditor.activeBuildTargetGroup); return(s_tempOpenXRValidationIssues.Count); }, setValueFunc = (int value) => { try { Assembly openXREditorAsm = null; foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) { if (asm.GetName().Name == "Unity.XR.OpenXR.Editor") { openXREditorAsm = asm; break; } } MethodInfo openWindowMethod = openXREditorAsm.GetType("UnityEditor.XR.OpenXR.OpenXRProjectValidationWindow", true).GetMethod("ShowWindow", BindingFlags.NonPublic | BindingFlags.Static); openWindowMethod.Invoke(null, new object[] { VIUSettingsEditor.activeBuildTargetGroup }); } catch (Exception e) { Debug.LogError("Failed to open OpenXRProjectValidationWindow: " + e); } }, recommendedValue = 0, }); Add(new VIUVersionCheck.RecommendedSetting <bool> { settingTitle = "Enable All Feature Sets", skipCheckFunc = () => !VIUSettingsEditor.PackageManagerHelper.IsPackageInList(VIUSettingsEditor.OPENXR_PLUGIN_PACKAGE_NAME) || !XRPluginManagementUtils.IsXRLoaderEnabled(UnityXRModule.OPENXR_LOADER_NAME, VIUSettingsEditor.activeBuildTargetGroup), currentValueFunc = () => { return(OpenXRSettings.ActiveBuildTargetInstance.GetFeatures <OpenXRInteractionFeature>().All(feature => feature.enabled)); }, setValueFunc = (bool value) => { if (!value) { return; } OpenXRFeature[] features = OpenXRSettings.ActiveBuildTargetInstance.GetFeatures <OpenXRInteractionFeature>(); foreach (OpenXRFeature feature in features) { feature.enabled = true; } }, recommendedValue = true, }); #endif }