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); }
public void OnGUI() { // scroll view of settings EditorGUIUtility.hierarchyMode = true; TerrainToolboxUtilities.DrawSeperatorLine(); m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition); // General Settings ShowGeneralGUI(); // Import Heightmap TerrainToolboxUtilities.DrawSeperatorLine(); bool importHeightmapToggle = m_Settings.EnableHeightmapImport; m_Settings.ShowHeightmapSettings = TerrainToolGUIHelper.DrawToggleHeaderFoldout(Styles.ImportHeightmap, m_Settings.ShowHeightmapSettings, ref importHeightmapToggle, 0f); ++EditorGUI.indentLevel; if (m_Settings.ShowHeightmapSettings) { EditorGUI.BeginDisabledGroup(!m_Settings.EnableHeightmapImport); ShowImportHeightmapGUI(); EditorGUI.EndDisabledGroup(); } m_Settings.EnableHeightmapImport = importHeightmapToggle; // Presets ShowPresetGUI(); // Gizmos EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(Styles.Gizmo, EditorStyles.boldLabel); if (GUILayout.Button(Styles.ShowGizmo)) { ToolboxHelper.ShowGizmo(); } if (GUILayout.Button(Styles.HideGizmo)) { ToolboxHelper.HideGizmo(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.EndScrollView(); // Options ShowOptionsGUI(); // Terrain info box --EditorGUI.indentLevel; string sizeMsg = string.Format("Terrain Size: {0}m x {1}m ", m_Settings.TerrainWidth, m_Settings.TerrainLength); string tileMsg = string.Format("Number of Tiles: {0} x {1} \n", m_Settings.TilesX, m_Settings.TilesZ); string heightMsg = string.Format("Terrain Height: {0}m ", m_Settings.TerrainHeight); string tileSizeMsg = string.Format("Tile Size: {0} x {1} ", (m_Settings.TerrainWidth / m_Settings.TilesX), (m_Settings.TerrainLength / m_Settings.TilesZ)); m_TerrainMessage = sizeMsg + tileMsg + heightMsg + tileSizeMsg; EditorGUILayout.HelpBox(m_TerrainMessage, MessageType.Info); // Create EditorGUILayout.BeginHorizontal(); if (GUILayout.Button(Styles.CreateBtn, GUILayout.Height(40))) { if (!RunCreateValidations()) { EditorUtility.DisplayDialog("Error", "There are incompatible terrain creation settings that need to be resolved to continue. Please check Console for details.", "OK"); } else { if (m_Settings.HeightmapMode == Heightmap.Mode.Global && File.Exists(m_Settings.GlobalHeightmapPath)) { m_Settings.UseGlobalHeightmap = true; } else { m_Settings.UseGlobalHeightmap = false; } Create(); } } EditorGUILayout.EndHorizontal(); }