public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); m_Editor.PullProbePositions(); EditMode.DoEditModeInspectorModeButton( EditMode.SceneViewEditMode.LightProbeGroup, "Edit Light Probes", Styles.editModeButton, this ); GUILayout.Space(3); EditorGUI.BeginDisabledGroup(EditMode.editMode != EditMode.SceneViewEditMode.LightProbeGroup); m_Editor.drawTetrahedra.value = EditorGUILayout.Toggle(Styles.showWireframe, m_Editor.drawTetrahedra.value); m_Editor.deringProbes = EditorGUILayout.Toggle(Styles.performDeringing, m_Editor.deringProbes); EditorGUI.BeginDisabledGroup(m_Editor.SelectedCount == 0); EditorGUI.BeginChangeCheck(); Vector3 pos = m_Editor.SelectedCount > 0 ? m_Editor.GetSelectedPositions()[0] : Vector3.zero; Vector3 newPosition = EditorGUILayout.Vector3Field(Styles.selectedProbePosition, pos); if (EditorGUI.EndChangeCheck()) { Vector3[] selectedPositions = m_Editor.GetSelectedPositions(); Vector3 delta = CalculateDeltaAndClamp(newPosition, pos); for (int i = 0; i < selectedPositions.Length; i++) { m_Editor.UpdateSelectedPosition(i, selectedPositions[i] + delta); } } EditorGUI.EndDisabledGroup(); GUILayout.Space(3); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); if (GUILayout.Button(Styles.addProbe)) { var position = Vector3.zero; if (SceneView.lastActiveSceneView) { var probeGroup = target as LightProbeGroup; if (probeGroup) { position = probeGroup.transform.InverseTransformPoint(position); } } StartEditProbes(); m_Editor.DeselectProbes(); m_Editor.AddProbe(position); } if (GUILayout.Button(Styles.deleteSelected)) { StartEditProbes(); m_Editor.RemoveSelectedProbes(); } GUILayout.EndVertical(); GUILayout.BeginVertical(); if (GUILayout.Button(Styles.selectAll)) { StartEditProbes(); m_Editor.SelectAllProbes(); } if (GUILayout.Button(Styles.duplicateSelected)) { StartEditProbes(); m_Editor.DuplicateSelectedProbes(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUI.EndDisabledGroup(); m_Editor.HandleEditMenuHotKeyCommands(); m_Editor.PushProbePositions(); if (EditorGUI.EndChangeCheck()) { m_Editor.MarkSourcePositionsDirty(); SceneView.RepaintAll(); } }
public override void OnInspectorGUI() { bool srpHasAlternativeToLegacyProbes = UnityEngine.Rendering.SupportedRenderingFeatures.active.overridesLightProbeSystem; if (srpHasAlternativeToLegacyProbes) { EditorGUILayout.HelpBox(UnityEngine.Rendering.SupportedRenderingFeatures.active.overridesLightProbeSystemWarningMessage, MessageType.Warning, wide: true); } using (new EditorGUI.DisabledScope(srpHasAlternativeToLegacyProbes)) { EditorGUI.BeginChangeCheck(); m_Editor.PullProbePositions(); EditorGUILayout.BeginHorizontal(); { GUILayout.FlexibleSpace(); EditMode.DoInspectorToolbar(Styles.toolbarModes, Styles.toolbarButtons, this); GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(3); m_Editor.drawTetrahedra.value = EditorGUILayout.Toggle(Styles.showWireframe, m_Editor.drawTetrahedra.value); m_Editor.deringProbes = EditorGUILayout.Toggle(Styles.performDeringing, m_Editor.deringProbes); EditorGUI.BeginDisabledGroup(EditMode.editMode != EditMode.SceneViewEditMode.LightProbeGroup); EditorGUI.BeginDisabledGroup(m_Editor.SelectedCount == 0); EditorGUI.BeginChangeCheck(); Vector3 pos = m_Editor.SelectedCount > 0 ? m_Editor.GetSelectedPositions()[0] : Vector3.zero; Vector3 newPosition = EditorGUILayout.Vector3Field(Styles.selectedProbePosition, pos); if (EditorGUI.EndChangeCheck()) { Vector3[] selectedPositions = m_Editor.GetSelectedPositions(); Vector3 delta = CalculateDeltaAndClamp(newPosition, pos); for (int i = 0; i < selectedPositions.Length; i++) { m_Editor.UpdateSelectedPosition(i, selectedPositions[i] + delta); } } EditorGUI.EndDisabledGroup(); GUILayout.Space(3); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); if (GUILayout.Button(Styles.addProbe)) { var position = Vector3.zero; if (SceneView.lastActiveSceneView) { var probeGroup = target as LightProbeGroup; if (probeGroup) { position = probeGroup.transform.InverseTransformPoint(position); } } StartEditProbes(); m_Editor.DeselectProbes(); m_Editor.AddProbe(position); } if (GUILayout.Button(Styles.deleteSelected)) { StartEditProbes(); m_Editor.RemoveSelectedProbes(); } GUILayout.EndVertical(); GUILayout.BeginVertical(); if (GUILayout.Button(Styles.selectAll)) { StartEditProbes(); m_Editor.SelectAllProbes(); } if (GUILayout.Button(Styles.duplicateSelected)) { StartEditProbes(); m_Editor.DuplicateSelectedProbes(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUI.EndDisabledGroup(); m_Editor.HandleEditMenuHotKeyCommands(); m_Editor.PushProbePositions(); if (EditorGUI.EndChangeCheck()) { m_Editor.MarkSourcePositionsDirty(); SceneView.RepaintAll(); } } }