private void SetRenderMode(VegetationRenderMode vegetationRenderMode, BiomeType[] selectedBiomeTypes)
        {
            RenderModeProcessor processor = new RenderModeProcessor(vegetationRenderMode);
            int itemChangeCount           = processor.Process(selectedBiomeTypes);

            // show confirmation messagebox
            EditorUtility.DisplayDialog("Set Render Mode", "Render mode changed to " + vegetationRenderMode + " for " + itemChangeCount + " items", "Ok");
        }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.HelpBox("Apply settings on selected Biomes", MessageType.Info);

                EditorGUILayout.LabelField("Batch Filter", GUIStyles.GroupTitleStyle);
                {
                    EditorGUILayout.PropertyField(modifyAll, new GUIContent("Modify All", "Whether a filter should be used or the changes should be applied to all biomes"));

                    if (!modifyAll.boolValue)
                    {
                        biomeType.intValue = EditorGUILayout.Popup("Biome Type Filter", biomeType.intValue, addedBiomes.GetStrings());
                    }
                }
            }
            GUILayout.EndVertical();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Runtime Spawn", GUIStyles.GroupTitleStyle);
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("Enable ALL in Filter"))
                        {
                            SetRuntimeSpawn(true, GetFilteredBiomeTypes());
                        }

                        if (GUILayout.Button("Disable ALL in Filter"))
                        {
                            SetRuntimeSpawn(false, GetFilteredBiomeTypes());
                        }
                    }
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndVertical();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Render Mode", GUIStyles.GroupTitleStyle);
                {
                    vegetationRenderMode = (VegetationRenderMode)EditorGUILayout.EnumPopup("Render Mode", vegetationRenderMode);

                    if (GUILayout.Button("Set Render Mode"))
                    {
                        SetRenderMode(vegetationRenderMode, GetFilteredBiomeTypes());
                    }
                }
            }
            GUILayout.EndVertical();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Refresh", GUIStyles.GroupTitleStyle);
                {
                    if (GUILayout.Button("Refresh Prefabs"))
                    {
                        RefreshPrefabs(GetFilteredBiomeTypes());
                    }
                }
            }
            GUILayout.EndVertical();


            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("CleanUp", GUIStyles.GroupTitleStyle);
                {
                    if (GUILayout.Button("Delete Unused Vegetation Items"))
                    {
                        DeleteUnusedVegetationItems(GetFilteredBiomeTypes());
                    }
                }
            }
            GUILayout.EndVertical();


            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Quick Access", GUIStyles.GroupTitleStyle);
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("Generate Biome SplatMaps"))
                        {
                            GenerateBiomeSplatMaps();
                        }
                    }
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndVertical();


            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Touch React Active (NatureManufacture Materials)", GUIStyles.GroupTitleStyle);
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("Enable ALL in Filter"))
                        {
                            SetTouchReactActive(true, GetFilteredBiomeTypes());
                        }

                        if (GUILayout.Button("Disable ALL in Filter"))
                        {
                            SetTouchReactActive(false, GetFilteredBiomeTypes());
                        }
                    }
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndVertical();

            serializedObject.ApplyModifiedProperties();
        }
 public RenderModeProcessor(VegetationRenderMode vegetationRenderMode)
 {
     this.vegetationRenderMode = vegetationRenderMode;
 }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.HelpBox("Apply settings on selected Biomes", MessageType.Info);

                EditorGUILayout.LabelField("Batch Filter", GUIStyles.GroupTitleStyle);
                {
                    EditorGUILayout.PropertyField(biomeType, new GUIContent("Biome Type", "The Biome type to be used."));
                }
            }
            GUILayout.EndVertical();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Runtime Spawn", GUIStyles.GroupTitleStyle);
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("Enable ALL in Filter"))
                        {
                            SetRuntimeSpawn(true, extension.biomeType);
                        }

                        if (GUILayout.Button("Disable ALL in Filter"))
                        {
                            SetRuntimeSpawn(false, extension.biomeType);
                        }
                    }
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndVertical();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Render Mode", GUIStyles.GroupTitleStyle);
                {
                    vegetationRenderMode = (VegetationRenderMode)EditorGUILayout.EnumPopup("Render Mode", vegetationRenderMode);

                    if (GUILayout.Button("Set Render Mode"))
                    {
                        SetRenderMode(vegetationRenderMode, extension.biomeType);
                    }
                }
            }
            GUILayout.EndVertical();

            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Refresh", GUIStyles.GroupTitleStyle);
                {
                    if (GUILayout.Button("Refresh Prefabs"))
                    {
                        RefreshPrefabs(extension.biomeType);
                    }
                }
            }
            GUILayout.EndVertical();


            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("CleanUp", GUIStyles.GroupTitleStyle);
                {
                    if (GUILayout.Button("Delete Unused Vegetation Items"))
                    {
                        DeleteUnusedVegetationItems(extension.biomeType);
                    }
                }
            }
            GUILayout.EndVertical();


            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Quick Access", GUIStyles.GroupTitleStyle);
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("Generate Biome SplatMaps"))
                        {
                            GenerateBiomeSplatMaps();
                        }
                    }
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndVertical();


            GUILayout.BeginVertical("box");
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Touch React Active (NatureManufacture Materials)", GUIStyles.GroupTitleStyle);
                {
                    GUILayout.BeginHorizontal();
                    {
                        if (GUILayout.Button("Enable ALL in Filter"))
                        {
                            SetTouchReactActive(true, extension.biomeType);
                        }

                        if (GUILayout.Button("Disable ALL in Filter"))
                        {
                            SetTouchReactActive(false, extension.biomeType);
                        }
                    }
                    GUILayout.EndHorizontal();
                }
            }
            GUILayout.EndVertical();

            serializedObject.ApplyModifiedProperties();
        }