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(); }
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 }; }
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(); } }