91 lines
3.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|