private void DrawDensityFunctionChooser()
    {
        EditorGUILayout.LabelField(new GUIContent("Density Function Settings: "), EditorStyles.boldLabel);

        EditorGUIExtensions.Space(2);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField(new GUIContent("Density Function Apply Mode: "));
        densityFuncApplyMode = (DensityFuncApplyMode)EditorGUILayout.EnumPopup(densityFuncApplyMode);
        EditorGUILayout.EndHorizontal();

        if (densityFuncApplyMode == DensityFuncApplyMode.OneForAll)
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField($"Function: ");
            string buttonString = densityFunctionType != null?densityFunctionType.ToString() : "Chose";

            if (GUILayout.Button(buttonString, EditorStyles.popup))
            {
                Rect r = EditorGUILayout.GetControlRect();
                r.position = Event.current.mousePosition;
                DrawDensityFuncChooser(r);
            }
            EditorGUILayout.EndHorizontal();
        }

        if (GUILayout.Button("Create New Denisty Function"))
        {
            EditorWindow window = GetWindow <FunctionGraphEditor>(typeof(TerrainChunkWindow));
            window.Show();
        }
    }
    public void Initialize()
    {
        chunkResolution      = settings.MinChunkResolution;
        densityFuncApplyMode = DensityFuncApplyMode.OneForAll;

        show = true;

        if (Chunk.DefaultExtents.sqrMagnitude <= 0)
        {
            Chunk.DefaultExtents = Vector3.one * 10f;
        }


        chunksToManage        = new ChunksToManage();
        chunksToManage.Chunks = new List <ChunkToGenerate>();
        chunksToManage.AddChunk(Vector3.zero);
        TagHelper.AddTag("TerrainRoot");
        FindOrCreateSurfaceGenerator();

        //select workspacce
        if (!hasWorkspace)
        {
            if (settings.Workspace == "")
            {
                SelectWorkspace();
            }
            else
            {
                relativeWorkspace = settings.Workspace;
            }
        }

        if (!hasPathToBlender)
        {
            if (settings.PathToBlender != "")
            {
                pathToBlender = settings.PathToBlender;
            }
        }
    }