mixedreality/com.microsoft.mixedreality..../Providers/OpenXR/Editor/OpenXRCameraSettingsProfile...

91 lines
3.8 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Microsoft.MixedReality.Toolkit.Editor;
using Microsoft.MixedReality.Toolkit.Utilities.Editor;
using System.Linq;
using UnityEditor;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.XRSDK.OpenXR.Editor
{
[CustomEditor(typeof(OpenXRCameraSettingsProfile))]
public class OpenXRCameraSettingsProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector
{
private const string ProfileTitle = "OpenXR Camera Settings";
private const string ProfileDescription = "";
private const string DepthReprojectionDocURL = "https://docs.microsoft.com/windows/mixed-reality/hologram-stability#reprojection";
private static readonly GUIContent ReprojectionMethodTitle = new GUIContent("HoloLens 2 Reprojection Method");
#if MSFT_OPENXR
private static GUIContent mrcSettingsButtonContent = null;
#endif
private SerializedProperty reprojectionMethod;
protected override void OnEnable()
{
base.OnEnable();
reprojectionMethod = serializedObject.FindProperty("reprojectionMethod");
}
public override void OnInspectorGUI()
{
RenderProfileHeader(ProfileTitle, ProfileDescription, target);
using (new EditorGUI.DisabledGroupScope(IsProfileLock((BaseMixedRealityProfile)target)))
{
serializedObject.Update();
EditorGUILayout.HelpBox("Render from PV camera is now enabled by default when running with the Mixed Reality OpenXR Plugin. " +
"It can be turned off from the \"Mixed Reality Features\" settings in the OpenXR plug-in settings. " +
"Look for \"Disable First Person Observer\".", MessageType.Info);
#if MSFT_OPENXR
mrcSettingsButtonContent ??= new GUIContent()
{
image = EditorGUIUtility.IconContent("Settings").image,
text = " OpenXR plug-in settings",
};
using (new EditorGUILayout.HorizontalScope())
{
GUILayout.FlexibleSpace();
// The settings button should always be enabled.
using (new GUIEnabledWrapper())
{
if (GUILayout.Button(mrcSettingsButtonContent, EditorStyles.miniButton, GUILayout.MaxWidth(250f)))
{
SettingsService.OpenProjectSettings("Project/XR Plug-in Management/OpenXR");
}
}
GUILayout.FlexibleSpace();
}
#endif
EditorGUILayout.Space();
using (new EditorGUILayout.HorizontalScope())
{
EditorGUILayout.LabelField("Depth Reprojection Settings", EditorStyles.boldLabel);
InspectorUIUtility.RenderDocumentationButton(DepthReprojectionDocURL);
}
EditorGUILayout.PropertyField(reprojectionMethod, ReprojectionMethodTitle);
serializedObject.ApplyModifiedProperties();
}
}
protected override bool IsProfileInActiveInstance()
{
var profile = target as BaseMixedRealityProfile;
return MixedRealityToolkit.IsInitialized && profile != null &&
MixedRealityToolkit.Instance.HasActiveProfile &&
MixedRealityToolkit.Instance.ActiveProfile.CameraProfile != null &&
MixedRealityToolkit.Instance.ActiveProfile.CameraProfile.SettingsConfigurations != null &&
MixedRealityToolkit.Instance.ActiveProfile.CameraProfile.SettingsConfigurations.Any(s => s.SettingsProfile == profile);
}
}
}