using UnityEngine; using UnityEngine.Rendering.Universal; #if XR_MANAGEMENT_4_0_1_OR_NEWER using UnityEditor.XR.Management; #endif namespace UnityEditor.Rendering.Universal { [CustomEditor(typeof(OnTilePostProcessFeature))] internal class OnTilePostProcessFeatureEditor : Editor { #region Serialized Properties private SerializedProperty m_UseFallbackProperty; #endregion static class Styles { public static readonly string k_NoSettingsHelpBox = L10n.Tr("This feature performs post-processing operation on tiled memory for Android based untethered XR platforms. There are currently no available settings, they might be added later."); public static readonly string k_NonUntetheredXRBuildTarget = L10n.Tr("On Tile PostProcessing feature is not fully supported on the current build target. Please switch to an untethered XR platform as the build target, and enable XR provider through XR Plug-in management. The render feature would fallback to texture read mode(slow off-tile rendering)"); } private void OnEnable() { } bool IsBuildTargetUntetheredXR() { bool isBuildTargetUntetheredXR = false; #if XR_MANAGEMENT_4_0_1_OR_NEWER var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); var buildTargetSettings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(buildTargetGroup); if (buildTargetSettings != null && buildTargetSettings.AssignedSettings != null && buildTargetSettings.AssignedSettings.activeLoaders.Count > 0) { isBuildTargetUntetheredXR = buildTargetGroup == BuildTargetGroup.Android; } #endif return isBuildTargetUntetheredXR; } public override void OnInspectorGUI() { if (!IsBuildTargetUntetheredXR()) { EditorGUILayout.HelpBox( Styles.k_NonUntetheredXRBuildTarget, MessageType.Error ); } EditorGUILayout.HelpBox(Styles.k_NoSettingsHelpBox, MessageType.Info); } } }