Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        /// <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--;
        }