void ShowGizmoGUI() { TerrainToolboxUtilities.DrawSeperatorLine(); bool gizmoToggle = m_Settings.EnableGizmo && ToolboxHelper.GizmoGO != null ? true : false; m_Settings.ShowGizmoSettings = TerrainToolGUIHelper.DrawToggleHeaderFoldout(Styles.Gizmo, m_Settings.ShowGizmoSettings, ref gizmoToggle, 0f); if (gizmoToggle && !ToolboxHelper.GizmoEnabled) { ToolboxHelper.ShowGizmo(); ToolboxHelper.UpdateGizmos(m_Settings.TerrainWidth, m_Settings.TerrainHeight, m_Settings.TerrainLength, m_Settings.StartPosition, m_Settings.GroupID); } else if (!gizmoToggle && ToolboxHelper.GizmoEnabled) { ToolboxHelper.HideGizmo(); } if (ToolboxHelper.GizmoEnabled && ToolboxHelper.GizmoGO != null) { if (GUI.changed) { ToolboxHelper.UpdateGizmos(m_Settings.TerrainWidth, m_Settings.TerrainHeight, m_Settings.TerrainLength, m_Settings.StartPosition, m_Settings.GroupID); } else if (ToolboxHelper.GizmoGO.transform.hasChanged) { Transform gizmoTransform = ToolboxHelper.GizmoGO.transform; Vector3Int gizmoScale = Vector3Int.RoundToInt(gizmoTransform.localScale); m_Settings.TerrainWidth = gizmoScale.x; m_Settings.TerrainLength = gizmoScale.z; m_Settings.TerrainHeight = gizmoScale.y; m_Settings.StartPosition = ToolboxHelper.GetGizmoPosition(); } } // Update gizmo colors Color previousColor = m_Settings.GizmoCubeColor + m_Settings.GizmoWireColor; if (m_Settings.ShowGizmoSettings) { EditorGUI.BeginDisabledGroup(!m_Settings.EnableGizmo); EditorGUILayout.Space(); m_Settings.GizmoCubeColor = EditorGUILayout.ColorField(Styles.CubeColor, m_Settings.GizmoCubeColor); m_Settings.GizmoWireColor = EditorGUILayout.ColorField(Styles.CubeWireColor, m_Settings.GizmoWireColor); EditorGUI.EndDisabledGroup(); } m_Settings.EnableGizmo = gizmoToggle; if (previousColor != m_Settings.GizmoCubeColor + m_Settings.GizmoWireColor) { UnityEditor.SceneView.RepaintAll(); } ToolboxHelper.SetGizmoColor(m_Settings.GizmoCubeColor, m_Settings.GizmoWireColor); }