// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using Microsoft.MixedReality.Toolkit.CameraSystem; using Microsoft.MixedReality.Toolkit.Utilities; using Microsoft.MixedReality.Toolkit.WindowsMixedReality; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality { /// /// Camera settings provider for use with Windows Mixed Reality and XR SDK. /// [MixedRealityDataProvider( typeof(IMixedRealityCameraSystem), SupportedPlatforms.WindowsUniversal | SupportedPlatforms.WindowsStandalone, "XR SDK Windows Mixed Reality Camera Settings", "WindowsMixedReality/Shared/Profiles/DefaultWindowsMixedRealityCameraSettingsProfile.asset", "MixedRealityToolkit.Providers", supportedUnityXRPipelines: SupportedUnityXRPipelines.XRSDK)] public class WindowsMixedRealityCameraSettings : BaseWindowsMixedRealityCameraSettings { /// /// Constructor. /// /// The instance of the camera system which is managing this provider. /// Friendly name of the provider. /// Provider priority. Used to determine order of instantiation. /// The provider's configuration profile. public WindowsMixedRealityCameraSettings( IMixedRealityCameraSystem cameraSystem, string name = null, uint priority = DefaultPriority, BaseCameraSettingsProfile profile = null) : base(cameraSystem, name, priority, profile) { } private bool? IsActiveLoader => #if WMR_ENABLED LoaderHelpers.IsLoaderActive("Windows MR Loader"); #else false; #endif // WMR_ENABLED /// public override void Enable() { if (!IsActiveLoader.HasValue) { IsEnabled = false; EnableIfLoaderBecomesActive(); return; } else if (!IsActiveLoader.Value) { IsEnabled = false; return; } base.Enable(); } private async void EnableIfLoaderBecomesActive() { await new WaitUntil(() => IsActiveLoader.HasValue); if (IsActiveLoader.Value) { Enable(); } } #region IMixedRealityCameraSettings /// public override bool IsOpaque => XRSubsystemHelpers.DisplaySubsystem == null || !XRSubsystemHelpers.DisplaySubsystem.running || XRSubsystemHelpers.DisplaySubsystem.displayOpaque; #endregion IMixedRealityCameraSettings } }