Пример #1
0
        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();
                }
            }
        }