96 lines
4.9 KiB
C#
96 lines
4.9 KiB
C#
using Unity.XR.PXR;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace Unity.XR.OpenXR.Features.PICOSupport
|
|
{
|
|
[CustomEditor(typeof(PICOFeature))]
|
|
internal class PICOFeatureEditor : Editor
|
|
{
|
|
void OnEnable()
|
|
{
|
|
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
PICOFeature picoFeature = (PICOFeature)target;
|
|
PICOProjectSetting projectConfig = PICOProjectSetting.GetProjectConfig();
|
|
EditorGUIUtility.labelWidth = 180;
|
|
//eye tracking
|
|
GUIStyle firstLevelStyle = new GUIStyle(GUI.skin.label);
|
|
firstLevelStyle.alignment = TextAnchor.UpperLeft;
|
|
firstLevelStyle.fontStyle = FontStyle.Bold;
|
|
firstLevelStyle.fontSize = 12;
|
|
firstLevelStyle.wordWrap = true;
|
|
var guiContent = new GUIContent();
|
|
guiContent.text = "Eye Tracking";
|
|
guiContent.tooltip = "Before calling EyeTracking API, enable this option first, only for Neo3 Pro Eye , PICO 4 Pro device.";
|
|
projectConfig.isEyeTracking = EditorGUILayout.Toggle(guiContent, projectConfig.isEyeTracking);
|
|
if (projectConfig.isEyeTracking)
|
|
{
|
|
projectConfig.isEyeTrackingCalibration = EditorGUILayout.Toggle(new GUIContent("Eye Tracking Calibration"), projectConfig.isEyeTrackingCalibration);
|
|
EditorGUILayout.BeginVertical("box");
|
|
EditorGUILayout.LabelField("Note: Eye Tracking is supported only on Neo 3 Pro Eye , PICO 4 Pro", firstLevelStyle);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
projectConfig.isHandTracking = EditorGUILayout.Toggle("Hand Tracking", projectConfig.isHandTracking);
|
|
|
|
var displayFrequencyContent = new GUIContent();
|
|
displayFrequencyContent.text = "Display Refresh Rates";
|
|
projectConfig.displayFrequency = (SystemDisplayFrequency)EditorGUILayout.EnumPopup(displayFrequencyContent, projectConfig.displayFrequency);
|
|
|
|
// content protect
|
|
projectConfig.useContentProtect = EditorGUILayout.Toggle("Use Content Protect", projectConfig.useContentProtect);
|
|
if (projectConfig.useContentProtect)
|
|
{
|
|
projectConfig.contentProtectFlags = (SecureContentFlag)EditorGUILayout.EnumPopup("Content Protect", projectConfig.contentProtectFlags);
|
|
}
|
|
|
|
//FFR
|
|
var foveationEnableContent = new GUIContent();
|
|
foveationEnableContent.text = "Foveated Rendering";
|
|
projectConfig.foveationEnable = EditorGUILayout.Toggle(foveationEnableContent, projectConfig.foveationEnable);
|
|
if (projectConfig.foveationEnable)
|
|
{
|
|
var foveationContent = new GUIContent();
|
|
foveationContent.text = "Foveated Rendering Mode";
|
|
projectConfig.foveatedRenderingMode = (FoveationFeature.FoveatedRenderingMode)EditorGUILayout.EnumPopup(foveationContent, projectConfig.foveatedRenderingMode);
|
|
|
|
var foveationLevel = new GUIContent();
|
|
foveationLevel.text = "Foveated Rendering Level";
|
|
projectConfig.foveatedRenderingLevel = (FoveationFeature.FoveatedRenderingLevel)EditorGUILayout.EnumPopup(foveationLevel, projectConfig.foveatedRenderingLevel);
|
|
|
|
if (projectConfig.foveatedRenderingLevel !=FoveationFeature.FoveatedRenderingLevel.Off)
|
|
{
|
|
var subsampledEnabledContent = new GUIContent();
|
|
subsampledEnabledContent.text = "Subsampling";
|
|
projectConfig.isSubsampledEnabled = EditorGUILayout.Toggle(subsampledEnabledContent, projectConfig.isSubsampledEnabled);
|
|
}
|
|
}
|
|
GUILayout.BeginHorizontal();
|
|
guiContent.text = "System Splash Screen";
|
|
guiContent.tooltip = "";
|
|
EditorGUILayout.LabelField(guiContent, GUILayout.Width(165));
|
|
projectConfig.systemSplashScreen = (Texture2D)EditorGUILayout.ObjectField(projectConfig.systemSplashScreen, typeof(Texture2D), true);
|
|
GUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.BeginVertical("box");
|
|
EditorGUILayout.LabelField("Note: Set the system splash screen picture in PNG format.", firstLevelStyle);
|
|
EditorGUILayout.EndVertical();
|
|
|
|
var MRSafeguard = new GUIContent();
|
|
MRSafeguard.text = "MR Safeguard";
|
|
MRSafeguard.tooltip = "MR safety, if you choose this option, your application will adopt MR safety policies during runtime. If not selected, it will continue to use VR safety policies by default.";
|
|
projectConfig.MRSafeguard = EditorGUILayout.Toggle(MRSafeguard, projectConfig.MRSafeguard);
|
|
|
|
serializedObject.Update();
|
|
if (GUI.changed)
|
|
{
|
|
EditorUtility.SetDirty(projectConfig);
|
|
}
|
|
serializedObject.ApplyModifiedProperties();
|
|
}
|
|
}
|
|
}
|