// 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
}
}