private void DisplayPerlin()
    {
        EditorGUILayout.LabelField("", GUI.skin.horizontalScrollbar);
        GUILayout.Label("Set Perlin Scale", EditorStyles.boldLabel);
        EditorGUILayout.Slider(perlinScaleX, 0f, 0.1f, new GUIContent("X Scale"));
        EditorGUILayout.Slider(perlinScaleY, 0f, 0.1f, new GUIContent("Y Scale"));
        EditorGUILayout.PropertyField(perlinOffsetX);
        EditorGUILayout.PropertyField(perlinOffsetY);

        if (GUILayout.Button("Generate HeightMap"))
        {
            terrain.PerlinNoise();
        }
    }
Exemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        CustomTerrain terrain = (CustomTerrain)target;

        EditorGUILayout.PropertyField(resetTerrain);

        showRandom = EditorGUILayout.Foldout(showRandom, "Random");

        if (showRandom)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Set heights randomly between values", EditorStyles.boldLabel);
            EditorGUILayout.PropertyField(randomHeightRange);
            if (GUILayout.Button("Random Heights"))
            {
                terrain.RandomTerrain();
            }
        }
        showLoadHeights = EditorGUILayout.Foldout(showLoadHeights, "Height Map Texture");

        if (showLoadHeights)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Load Height Map Texture", EditorStyles.boldLabel);
            EditorGUILayout.PropertyField(heightMapImage);
            EditorGUILayout.PropertyField(heightMapScale);
            if (GUILayout.Button("Load Texture"))
            {
                terrain.LoadHeightMapImage();
            }
        }

        showPerlin = EditorGUILayout.Foldout(showPerlin, "Perlin Noise Generator");

        if (showPerlin)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Perlin Generator", EditorStyles.boldLabel);
            EditorGUILayout.Slider(perlinNoiseXScale, 0f, 0.05f, new GUIContent("X Scale"));
            EditorGUILayout.Slider(PerlinNoiseYScale, 0f, 0.05f, new GUIContent("Y Scale"));
            EditorGUILayout.IntSlider(perlinOffsetX, 0, 10000, new GUIContent("X Offset"));
            EditorGUILayout.IntSlider(perlinOffsetY, 0, 10000, new GUIContent("Y Offset"));
            EditorGUILayout.IntSlider(perlinOctaves, 0, 50, new GUIContent("Brownian Octaves"));
            EditorGUILayout.Slider(perlinPersistance, 0.1f, 20f, new GUIContent("Brownian Persistance"));
            EditorGUILayout.Slider(perlinHeightScale, 0f, 1f, new GUIContent("Height Scale"));
            if (GUILayout.Button("Run Generator"))
            {
                terrain.PerlinNoise();
            }
        }

        showMultiPerlin = EditorGUILayout.Foldout(showMultiPerlin, "Multiple Perlin Noise Generator");

        if (showMultiPerlin)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Multiple Perlin Generator", EditorStyles.boldLabel);

            perlinParameterTable = GUITableLayout.DrawTable(perlinParameterTable, serializedObject.FindProperty("perlinParameters"));
            GUILayout.Space(29);
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("+"))
            {
                terrain.AddNewPerlin();
            }
            if (GUILayout.Button("-"))
            {
                terrain.RemovePerlin();
            }
            EditorGUILayout.EndHorizontal();
            if (GUILayout.Button("Run Multi Perlin Generator"))
            {
                terrain.MultiPerlin();
            }
        }

        showVoronoi = EditorGUILayout.Foldout(showVoronoi, "Voronoi");

        if (showVoronoi)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Voronoi Generator", EditorStyles.boldLabel);

            EditorGUILayout.Slider(voronoiFallOff, 0f, 10f, new GUIContent("Fall Off"));
            EditorGUILayout.Slider(voronoiDropOff, 0f, 10f, new GUIContent("Drop Off"));
            EditorGUILayout.Slider(voronoiMinHeight, 0f, 1f, new GUIContent("Min Height"));
            EditorGUILayout.Slider(voronoiMaxHeight, 0f, 1f, new GUIContent("Max Height"));
            EditorGUILayout.IntSlider(voronoiPeakCount, 1, 10, new GUIContent("Peak Count"));
            EditorGUILayout.PropertyField(voronoiType);
            if (GUILayout.Button("Run Voronoi"))
            {
                terrain.VeronoiLift();
            }
        }

        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
        if (GUILayout.Button("Reset Terrain"))
        {
            terrain.ResetTerrain();
        }

        serializedObject.ApplyModifiedProperties();
    }
    public override void OnInspectorGUI()
    {
        //updating values
        serializedObject.Update();
        //target is the linked script
        CustomTerrain customTerrain = (CustomTerrain)target;


        Event e = Event.current;

        switch (e.type)
        {
        case EventType.KeyDown:
        {
            if (e.keyCode == (KeyCode.Alpha6))
            {
                customTerrain.SaveTerrain();
            }
            if (e.keyCode == (KeyCode.Alpha7))
            {
                customTerrain.RandomTerrain();
            }
            if (e.keyCode == (KeyCode.Alpha8))
            {
                customTerrain.PerlinNoise();
            }
            if (e.keyCode == (KeyCode.Alpha3))
            {
                customTerrain.MultiplePerlinNoise();
            }
            if (e.keyCode == (KeyCode.Alpha4))
            {
                customTerrain.AddPerlinNoise();
            }
            if (e.keyCode == (KeyCode.Alpha5))
            {
                customTerrain.RemovePerlinNoise();
            }
            if (e.keyCode == (KeyCode.Alpha1))
            {
                customTerrain.ResetTerrain();
            }
            if (e.keyCode == (KeyCode.Alpha0))
            {
                customTerrain.LoadTerrain();
            }
            break;
        }
        }
        EditorGUILayout.PropertyField(resetTerrain);
        //fold out button and fields
        randomHeight = EditorGUILayout.Foldout(randomHeight, "RandomHeight");
        if (randomHeight)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Set a random height within range", EditorStyles.boldLabel);
            EditorGUILayout.PropertyField(randomHeightRange);
            if (GUILayout.Button(new GUIContent("Random Height", "Random Height Terrain Generation")))
            {
                customTerrain.RandomTerrain();
            }
        }
        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);

        perlinNoise = EditorGUILayout.Foldout(perlinNoise, "PerlinNoise");
        if (perlinNoise)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Perlin Noise", EditorStyles.boldLabel);
            EditorGUILayout.Slider(perlinX, 0, 0.1f, new GUIContent("X")); //min 0 max 0.1 although still
            EditorGUILayout.Slider(perlinY, 0, 0.1f, new GUIContent("Y")); //gets too "spiky"
            EditorGUILayout.IntSlider(perlinXoffset, 0, 10000, new GUIContent("X Offset"));
            EditorGUILayout.IntSlider(perlinYoffset, 0, 10000, new GUIContent("Y Offset"));
            EditorGUILayout.IntSlider(perlinOctaves, 1, 10, new GUIContent("Octaves"));
            EditorGUILayout.Slider(perlinPersistance, 0.1f, 10f, new GUIContent("Persistance"));
            EditorGUILayout.Slider(perlinHeightScale, 0f, 1f, new GUIContent("Height Scale"));

            if (GUILayout.Button(new GUIContent("Perlin Noise", "Simle Perlin Noise generation")))
            {
                customTerrain.PerlinNoise();
            }
        }
        multiplePerlinNoise = EditorGUILayout.Foldout(multiplePerlinNoise, "Multiple Perlin Noise");
        if (multiplePerlinNoise)
        {
            EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            GUILayout.Label("Multiple Perlin Noise", EditorStyles.boldLabel);
            perlinParametersTable = GUITableLayout.DrawTable(perlinParametersTable, perlinParameters);
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button(new GUIContent("+", "Adding an extra Perlin Curve")))
            {
                customTerrain.AddPerlinNoise();
            }
            if (GUILayout.Button(new GUIContent("-", "Removing the selected Perlin Curve")))
            {
                customTerrain.RemovePerlinNoise();
            }
            EditorGUILayout.EndHorizontal();
            if (GUILayout.Button(new GUIContent("Apply Multiple Perlin", "Applying Multiple Perlin Noise Curves")))
            {
                customTerrain.MultiplePerlinNoise();
            }
        }
        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
        if (GUILayout.Button(new GUIContent("Reset Terrain", "will completely reset terrain")))
        {
            customTerrain.ResetTerrain();
        }
        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);

        if (GUILayout.Button(new GUIContent("Save Terrain", "Saving Terrain in Assets/Saves")))
        {
            customTerrain.SaveTerrain();
        }

        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
        if (GUILayout.Button(new GUIContent("Load Terrain", "Loading Terrain from Assets/Saves")))
        {
            customTerrain.LoadTerrain();
        }

        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
        if (GUILayout.Button(new GUIContent("Help Window", "Will open Help Window")))
        {
            HelpWindow.ShowHelpWindow();
        }

        //applying modifications
        serializedObject.ApplyModifiedProperties();
    }