Exemple #1
0
        public override void OnInspectorGUI()
        {
            var rpAsset = UniversalRenderPipeline.asset;

            if (rpAsset == null)
            {
                base.OnInspectorGUI();
                return;
            }

            m_SerializedCamera.Update();

            UniversalRenderPipelineCameraUI.Inspector.Draw(m_SerializedCamera, this);

            m_SerializedCamera.Apply();
        }
        public override void OnInspectorGUI()
        {
            var rpAsset = UniversalRenderPipeline.asset;

            if (rpAsset == null)
            {
                base.OnInspectorGUI();
                return;
            }

            m_SerializedCamera.Update();
            UpdateAnimationValues(false);

            // Get the type of Camera we are using
            CameraRenderType camType = DrawCameraType();

            EditorGUILayout.Space();
            // If we have different cameras selected that are of different types we do not allow multi editing and we do not draw any more UI.
            if (m_SerializedCamera.cameraType.hasMultipleDifferentValues)
            {
                EditorGUILayout.HelpBox("Cannot multi edit cameras of different types.", MessageType.Info);
                return;
            }

            EditorGUI.indentLevel++;

            DrawCommonSettings();
            DrawRenderingSettings(camType, rpAsset);
            DrawEnvironmentSettings(camType);

            if (camType == CameraRenderType.Base)
            {
                // Settings only relevant to base cameras
                EditorGUI.BeginChangeCheck();
                DrawOutputSettings(rpAsset);
                if (EditorGUI.EndChangeCheck())
                {
                    UpdateStackCamerasOutput();
                }
                DrawStackSettings();
            }

            EditorGUI.indentLevel--;
            m_SerializedCamera.Apply();
        }
Exemple #3
0
        void UpdateCameras()
        {
            m_SerializedCamera.Refresh();

            m_LayerList = new ReorderableList(m_SerializedCamera.serializedObject, m_SerializedCamera.cameras, true, true, true, true)
            {
                drawHeaderCallback  = rect => EditorGUI.LabelField(rect, Styles.cameras),
                drawElementCallback = DrawElementCallback,
                onSelectCallback    = SelectElement,
                onRemoveCallback    = list =>
                {
                    m_SerializedCamera.cameras.DeleteArrayElementAtIndex(list.index);
                    ReorderableList.defaultBehaviours.DoRemoveButton(list);
                    m_SerializedCamera.Apply();

                    // Force update the list as removed camera could been there
                    m_TypeErrorCameras.Clear();
                    m_OutputWarningCameras.Clear();
                },
                onAddDropdownCallback = AddCameraToCameraList
            };
        }
Exemple #4
0
        private void UpdateStackCameraOutput(Camera cam, UniversalRenderPipelineSerializedCamera serializedCamera)
        {
            if ((CameraRenderType)serializedCamera.cameraType.intValue == CameraRenderType.Base)
            {
                return;
            }

            serializedCamera.Update();
            Undo.RecordObject(camera, Styles.inspectorOverlayCameraText);

            var serializedCameraSettings = serializedCamera.baseCameraSettings;

            bool isChanged = false;

            // Force same render texture
            RenderTexture targetTexture = settings.targetTexture.objectReferenceValue as RenderTexture;

            if (cam.targetTexture != targetTexture)
            {
                cam.targetTexture = targetTexture;
                isChanged         = true;
            }

            // Force same hdr
            bool allowHDR = settings.HDR.boolValue;

            if (cam.allowHDR != allowHDR)
            {
                cam.allowHDR = allowHDR;
                isChanged    = true;
            }

            // Force same mssa
            bool allowMSSA = settings.allowMSAA.boolValue;

            if (cam.allowMSAA != allowMSSA)
            {
                cam.allowMSAA = allowMSSA;
                isChanged     = true;
            }

            // Force same viewport rect
            Rect rect = settings.normalizedViewPortRect.rectValue;

            if (cam.rect != rect)
            {
                cam.rect  = settings.normalizedViewPortRect.rectValue;
                isChanged = true;
            }

            // Force same dynamic resolution
            bool allowDynamicResolution = settings.allowDynamicResolution.boolValue;

            if (serializedCamera.allowDynamicResolution.boolValue != allowDynamicResolution)
            {
                cam.allowDynamicResolution = allowDynamicResolution;
                isChanged = true;
            }

            // Force same target display
            int targetDisplay = settings.targetDisplay.intValue;

            if (cam.targetDisplay != targetDisplay)
            {
                cam.targetDisplay = targetDisplay;
                isChanged         = true;
            }

#if ENABLE_VR && ENABLE_XR_MODULE
            // Force same target display
            int selectedValue = !m_SerializedCamera.allowXRRendering.boolValue ? 0 : 1;
            int overlayCameraSelectedValue = !serializedCamera.allowXRRendering.boolValue ? 0 : 1;
            if (overlayCameraSelectedValue != selectedValue)
            {
                serializedCamera.allowXRRendering.boolValue = selectedValue == 1;
                isChanged = true;
            }
#endif

            if (isChanged)
            {
                EditorUtility.SetDirty(cam);
                serializedCamera.Apply();
            }
        }