/// <summary> /// Draws the scene hills. /// </summary> /// <param name="_ground">Ground.</param> /// <param name="_player">Player.</param> public static void DrawSceneHills(GameObject _ground, GameObject _player) { if (_ground == null) { return; } ICEEditorStyle.Splitter(); ICEEditorLayout.BeginHorizontal(); TerrainTools.TerrainHills = (int)ICEEditorLayout.DefaultSlider("Hills (max.)", "", TerrainTools.TerrainHills, 1, 0, 500, TerrainTools.DefaultTerrainHills); EditorGUI.BeginDisabledGroup(TerrainTools.TerrainHills == 0 || _ground == null || _ground.GetComponent <Terrain>() == null); if (ICEEditorLayout.ButtonMiddle("UPDATE", "")) { if (_ground != null && _ground.GetComponent <Terrain>() != null) { Undo.RegisterCompleteObjectUndo(_ground.GetComponent <Terrain>().terrainData, "Wizard Terrain Data"); TerrainTools.CreateHills(_ground.GetComponent <Terrain>().terrainData); TerrainTools.UpdateSplatmap(_ground.GetComponent <Terrain>().terrainData); UpdateLevel(_player, _ground); } } EditorGUI.EndDisabledGroup(); ICEEditorLayout.EndHorizontal(Info.WIZARD_TERRAIN_HILLS); EditorGUI.BeginDisabledGroup(TerrainTools.TerrainHills == 0); EditorGUI.indentLevel++; int _terrain_height = TerrainTools.GetTerrainHeight(_ground); int _terrain_size = TerrainTools.GetTerrainSize(_ground); float _height = (int)MathTools.Denormalize(TerrainTools.TerrainHillsMaxHeight, 0, _terrain_height); float _radius = (int)MathTools.Denormalize(TerrainTools.TerrainHillsMaxRadius * 2, 0, _terrain_size * 0.5f); float _radius_min = MathTools.Normalize(_height, 0, _terrain_size); TerrainTools.TerrainHillsMaxHeight = ICEEditorLayout.DefaultSlider("Max. Height (" + _height + ")", "", TerrainTools.TerrainHillsMaxHeight, Init.DECIMAL_PRECISION, 0, 1, TerrainTools.DefaultTerrainHillsMaxHeight * TerrainTools.GetSizeMultiplier()); TerrainTools.TerrainHillsMaxRadius = ICEEditorLayout.DefaultSlider("Max. Radius (" + _radius + ")", "", TerrainTools.TerrainHillsMaxRadius, Init.DECIMAL_PRECISION, _radius_min, 1, TerrainTools.DefaultTerrainHillsMaxRadius * TerrainTools.GetSizeMultiplier()); EditorGUI.indentLevel--; EditorGUI.EndDisabledGroup(); }
/// <summary> /// Draws the scene terrain. /// </summary> /// <param name="_ground">Ground.</param> /// <param name="_player">Player.</param> public static void DrawSceneTerrain(GameObject _ground, GameObject _player) { ICEEditorStyle.Splitter(); ICEEditorLayout.BeginHorizontal(); TerrainTools.DesiredTerrainSize = (int)ICEEditorLayout.Slider("Terrain Size", "", TerrainTools.DesiredTerrainSize, 100, 100, 2000); TerrainTools.DesiredTerrainResolutionMultiplier = (int)ICEEditorLayout.ButtonOptionMini("1", TerrainTools.DesiredTerrainResolutionMultiplier, 1); TerrainTools.DesiredTerrainResolutionMultiplier = (int)ICEEditorLayout.ButtonOptionMini("2", TerrainTools.DesiredTerrainResolutionMultiplier, 2); TerrainTools.DesiredTerrainResolutionMultiplier = (int)ICEEditorLayout.ButtonOptionMini("4", TerrainTools.DesiredTerrainResolutionMultiplier, 4); TerrainTools.DesiredTerrainResolutionMultiplier = (int)ICEEditorLayout.ButtonOptionMini("8", TerrainTools.DesiredTerrainResolutionMultiplier, 8); int _desired_value = TerrainTools.DesiredTerrainSize + TerrainTools.DesiredTerrainResolutionMultiplier; int _current_value = TerrainTools.TerrainSize + TerrainTools.TerrainResolutionMultiplier; int _default_value = TerrainTools.DefaultTerrainSize + TerrainTools.DefaultTerrainResolutionMultiplier; if (_desired_value != _default_value) { _update_required = true; } if (ICEEditorLayout.ButtonDefault(_desired_value, _default_value) == _default_value) { TerrainTools.DesiredTerrainSize = TerrainTools.DefaultTerrainSize; TerrainTools.DesiredTerrainResolutionMultiplier = TerrainTools.DefaultTerrainResolutionMultiplier; } if (ICEEditorLayout.UpdateButton(_desired_value != _current_value)) { if (_ground != null && _ground.GetComponent <Terrain>() != null) { Undo.RegisterCompleteObjectUndo(_ground.GetComponent <Terrain>().terrainData, "Wizard Terrain Data"); if (_update_required) { _update_required = false; GameObject.DestroyImmediate(_ground); _ground = TerrainTools.CreateTerrain(); if (_ground != null && _ground.GetComponent <Terrain>() != null) { Vector3 _s = _ground.GetComponent <Terrain>().terrainData.size; _ground.transform.position = new Vector3(_s.x / -2, 0, _s.z / -2); } } else { TerrainTools.UpdateTerrainSize(_ground.GetComponent <Terrain>().terrainData); } UpdateLevel(_player, _ground); } } ICEEditorLayout.EndHorizontal(Info.WIZARD_TERRAIN_SIZE); EditorGUI.indentLevel++; ICEEditorLayout.BeginHorizontal(); TerrainTools.DesiredTerrainHeight = (int)ICEEditorLayout.DefaultSlider("Height", "", TerrainTools.DesiredTerrainHeight, 1, 0, 600, 600); EditorGUI.BeginDisabledGroup(_ground == null || _ground.GetComponent <Terrain>() == null); if (ICEEditorLayout.ButtonMiddle("UPDATE", "")) { if (_ground != null && _ground.GetComponent <Terrain>() != null) { Undo.RegisterCompleteObjectUndo(_ground.GetComponent <Terrain>().terrainData, "Wizard Terrain Data"); TerrainTools.UpdateTerrainSize(_ground.GetComponent <Terrain>().terrainData); UpdateLevel(_player, _ground); } } EditorGUI.EndDisabledGroup(); ICEEditorLayout.EndHorizontal(Info.WIZARD_TERRAIN_HEIGHT); ICEEditorLayout.BeginHorizontal(); TerrainTools.TerrainBaseLevel = ICEEditorLayout.DefaultSlider("Base", "", TerrainTools.TerrainBaseLevel, Init.DECIMAL_PRECISION_DISTANCES, -1, 1, 0); EditorGUI.BeginDisabledGroup(_ground == null || _ground.GetComponent <Terrain>() == null); if (ICEEditorLayout.ButtonMiddle("RESET", "")) { if (_ground != null && _ground.GetComponent <Terrain>() != null) { Undo.RegisterCompleteObjectUndo(_ground.GetComponent <Terrain>().terrainData, "Wizard Terrain Data"); TerrainTools.Reset(_ground.GetComponent <Terrain>().terrainData); } } if (ICEEditorLayout.ButtonMiddle("UPDATE", "")) { if (_ground != null && _ground.GetComponent <Terrain>() != null) { Undo.RegisterCompleteObjectUndo(_ground.GetComponent <Terrain>().terrainData, "Wizard Terrain Data"); TerrainTools.UpdateTerrainBaseLevel(_ground.GetComponent <Terrain>().terrainData); TerrainTools.UpdateSplatmap(_ground.GetComponent <Terrain>().terrainData); UpdateLevel(_player, _ground); } } EditorGUI.EndDisabledGroup(); ICEEditorLayout.EndHorizontal(Info.WIZARD_TERRAIN_BASE); ICEEditorStyle.Splitter(); ICEEditorLayout.BeginHorizontal(); TerrainTools.TerrainBumpsMax = ICEEditorLayout.DefaultSlider("Bumps", "", TerrainTools.TerrainBumpsMax, Init.DECIMAL_PRECISION, 0, 1, TerrainTools.DefaultTerrainBumpsMax * TerrainTools.GetSizeMultiplier()); TerrainTools.TerrainBumpsMin = -TerrainTools.TerrainBumpsMax; EditorGUI.BeginDisabledGroup(_ground == null || _ground.GetComponent <Terrain>() == null); if (ICEEditorLayout.ButtonMiddle("UPDATE", "")) { if (_ground != null && _ground.GetComponent <Terrain>() != null) { Undo.RegisterCompleteObjectUndo(_ground.GetComponent <Terrain>().terrainData, "Wizard Terrain Data"); TerrainTools.UpdateTerrainBumps(_ground.GetComponent <Terrain>().terrainData); TerrainTools.UpdateSplatmap(_ground.GetComponent <Terrain>().terrainData); UpdateLevel(_player, _ground); } } EditorGUI.EndDisabledGroup(); ICEEditorLayout.EndHorizontal(Info.WIZARD_TERRAIN_BUMPS); ICEEditorLayout.BeginHorizontal(); TerrainTools.TerrainSmoothingLoops = (int)ICEEditorLayout.DefaultSlider("Smoothing", "", TerrainTools.TerrainSmoothingLoops, 1, 0, 8, TerrainTools.DefaultTerrainSmoothingLoops); EditorGUI.BeginDisabledGroup(_ground == null || _ground.GetComponent <Terrain>() == null); if (ICEEditorLayout.ButtonMiddle("UPDATE", "")) { if (_ground != null && _ground.GetComponent <Terrain>() != null) { Undo.RegisterCompleteObjectUndo(_ground.GetComponent <Terrain>().terrainData, "Wizard Terrain Data"); TerrainTools.SmoothTerrain(_ground.GetComponent <Terrain>().terrainData); TerrainTools.UpdateSplatmap(_ground.GetComponent <Terrain>().terrainData); UpdateLevel(_player, _ground); } } EditorGUI.EndDisabledGroup(); ICEEditorLayout.EndHorizontal(Info.WIZARD_TERRAIN_SMOOTHING); EditorGUI.indentLevel--; }