123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using UnityEngine;
- using UnityEngine.Rendering.Universal;
-
- namespace UnityEditor.Rendering.Universal
- {
- using CED = CoreEditorDrawer<UniversalRenderPipelineSerializedCamera>;
-
- static partial class UniversalRenderPipelineCameraUI
- {
- [URPHelpURL("camera-component-reference")]
- public enum Expandable
- {
- /// <summary> Projection</summary>
- Projection = 1 << 0,
- /// <summary> Physical</summary>
- Physical = 1 << 1,
- /// <summary> Output</summary>
- Output = 1 << 2,
- /// <summary> Orthographic</summary>
- Orthographic = 1 << 3,
- /// <summary> RenderLoop</summary>
- RenderLoop = 1 << 4,
- /// <summary> Rendering</summary>
- Rendering = 1 << 5,
- /// <summary> Environment</summary>
- Environment = 1 << 6,
- /// <summary> Stack</summary>
- Stack = 1 << 7,
- }
-
- public enum ExpandableAdditional
- {
- /// <summary> Rendering</summary>
- Rendering = 1 << 0,
- }
-
- static readonly ExpandedState<Expandable, Camera> k_ExpandedState = new(Expandable.Projection, "URP");
- static readonly AdditionalPropertiesState<ExpandableAdditional, Camera> k_ExpandedAdditionalState = new(0, "URP");
-
- public static readonly CED.IDrawer SectionProjectionSettings = CED.FoldoutGroup(
- CameraUI.Styles.projectionSettingsHeaderContent,
- Expandable.Projection,
- k_ExpandedState,
- FoldoutOption.Indent,
- CED.Group(
- DrawerProjection
- ),
- PhysicalCamera.Drawer
- );
-
- public static readonly CED.IDrawer SectionStackSettings =
- CED.Conditional(
- (serialized, editor) => (CameraRenderType)serialized.cameraType.intValue == CameraRenderType.Base,
- CED.FoldoutGroup(Styles.stackSettingsText, Expandable.Stack, k_ExpandedState, FoldoutOption.Indent, CED.Group(DrawerStackCameras)));
-
- public static readonly CED.IDrawer[] Inspector =
- {
- CED.Group(
- DrawerCameraType
- ),
- SectionProjectionSettings,
- Rendering.Drawer,
- SectionStackSettings,
- Environment.Drawer,
- Output.Drawer
- };
-
- static void DrawerProjection(UniversalRenderPipelineSerializedCamera p, Editor owner)
- {
- var camera = p.serializedObject.targetObject as Camera;
- bool pixelPerfectEnabled = camera.TryGetComponent<PixelPerfectCamera>(out var pixelPerfectCamera) && pixelPerfectCamera.enabled;
- if (pixelPerfectEnabled)
- EditorGUILayout.HelpBox(Styles.pixelPerfectInfo, MessageType.Info);
-
- using (new EditorGUI.DisabledGroupScope(pixelPerfectEnabled))
- CameraUI.Drawer_Projection(p, owner);
- }
-
- static void DrawerCameraType(UniversalRenderPipelineSerializedCamera p, Editor owner)
- {
- int selectedRenderer = p.renderer.intValue;
- ScriptableRenderer scriptableRenderer = UniversalRenderPipeline.asset.GetRenderer(selectedRenderer);
- bool isDeferred = scriptableRenderer is UniversalRenderer { renderingModeRequested: RenderingMode.Deferred };
-
- EditorGUI.BeginChangeCheck();
-
- CameraRenderType originalCamType = (CameraRenderType)p.cameraType.intValue;
- CameraRenderType camType = scriptableRenderer.SupportsCameraStackingType(CameraRenderType.Overlay) ? originalCamType : CameraRenderType.Base;
- EditorGUI.BeginDisabledGroup(scriptableRenderer.SupportedCameraStackingTypes() == 0);
- camType = (CameraRenderType)EditorGUILayout.EnumPopup(
- Styles.cameraType,
- camType,
- e => scriptableRenderer.SupportsCameraStackingType((CameraRenderType)e),
- false
- );
- EditorGUI.EndDisabledGroup();
-
- if (EditorGUI.EndChangeCheck() || camType != originalCamType)
- {
- p.cameraType.intValue = (int)camType;
- if (camType == CameraRenderType.Overlay)
- {
- p.baseCameraSettings.clearFlags.intValue = (int)CameraClearFlags.Nothing;
- }
- }
-
- EditorGUILayout.Space();
- }
-
- static void DrawerStackCameras(UniversalRenderPipelineSerializedCamera p, Editor owner)
- {
- if (owner is UniversalRenderPipelineCameraEditor cameraEditor)
- {
- cameraEditor.DrawStackSettings();
- }
- }
- }
- }
|