public override void OnInspectorGUI() { _biomeMaskArea = (BiomeMaskArea)target; OverrideLogoTextureName = "Banner_BiomeMaskArea"; base.OnInspectorGUI(); EditorGUIUtility.labelWidth = 200; GUILayout.BeginVertical("box"); EditorGUILayout.HelpBox("Create the area where you want to modify the vegetation, you can remove and/or include vegetation types", MessageType.Info); GUILayout.EndVertical(); GUILayout.BeginVertical("box"); if (_biomeMaskArea.enabled) { EditorGUILayout.LabelField("Insert Node: Ctrl-Click", LabelStyle); EditorGUILayout.LabelField("Delete Node: Ctrl-Shift-Click", LabelStyle); EditorGUILayout.LabelField("Toggle edge: Ctrl-Alt-Click", LabelStyle); EditorGUILayout.HelpBox("Edges betwee 2 disabled edge nodes will not be included when calculating edge distance in rules and blending.", MessageType.Info); } else { EditorGUILayout.HelpBox("Enable mask to edit nodes", MessageType.Info); } if (_biomeMaskArea.Nodes.Count < 4) { EditorGUILayout.HelpBox("There has to be at least 3 nodes to define the area", MessageType.Warning); } GUILayout.EndVertical(); GUILayout.BeginVertical("box"); EditorGUI.BeginChangeCheck(); _biomeMaskArea.ShowArea = EditorGUILayout.Toggle("Show Area", _biomeMaskArea.ShowArea); _biomeMaskArea.ShowHandles = EditorGUILayout.Toggle("Show Handles", _biomeMaskArea.ShowHandles); if (EditorGUI.EndChangeCheck()) { SetMaskDirty(); } GUILayout.BeginVertical("box"); EditorGUILayout.HelpBox("Select ground layers that will be used for selection when adding and moving masks. These will be used in addition to unity terrains.", MessageType.Info); _biomeMaskArea.GroundLayerMask = LayerMaskField("Ground Layers", _biomeMaskArea.GroundLayerMask); GUILayout.EndVertical(); GUILayout.BeginVertical("box"); if (GUILayout.Button("Generate splatmap")) { VegetationStudioManager.GenerateSplatMap(); } EditorGUILayout.HelpBox("This will generate the splatmaps with biomes for all Terrains based on current rules in the vegetation packages.", MessageType.Info); GUILayout.EndVertical(); GUILayout.BeginVertical("box"); EditorGUILayout.LabelField("Vegetation Blend settings", LabelStyle); if (_distanceCurveEditor.EditCurves(_biomeMaskArea.BlendCurve, _biomeMaskArea.InverseBlendCurve, this)) { SetMaskDirty(); } EditorGUILayout.LabelField("Texture Blend settings", LabelStyle); if (_distanceCurveEditor.EditCurve(_biomeMaskArea.TextureBlendCurve, this)) { SetMaskDirty(); } EditorGUILayout.HelpBox("The blend curve defines how the edge area(within distance) will blend against the main biome. Green is for the selected biome. Red the main biome.", MessageType.Info); EditorGUI.BeginChangeCheck(); _biomeMaskArea.BlendDistance = EditorGUILayout.Slider("Blend distance", _biomeMaskArea.BlendDistance, 0, 300f); _biomeMaskArea.UseNoise = EditorGUILayout.Toggle("Use noise", _biomeMaskArea.UseNoise); _biomeMaskArea.NoiseScale = EditorGUILayout.Slider("Noise scale", _biomeMaskArea.NoiseScale, 1, 500); EditorGUILayout.HelpBox("When enabled noise will be used in addition to the fallout curve to create the edge blend values.", MessageType.Info); GUILayout.EndVertical(); if (EditorGUI.EndChangeCheck()) { SetMaskDirty(); } GUILayout.EndVertical(); GUILayout.BeginVertical("box"); EditorGUILayout.LabelField("Mask settings", LabelStyle); EditorGUI.BeginChangeCheck(); _biomeMaskArea.MaskName = EditorGUILayout.TextField("Mask Name", _biomeMaskArea.MaskName); _biomeMaskArea.BiomeType = (BiomeType)EditorGUILayout.EnumPopup("Select biome", _biomeMaskArea.BiomeType); if (EditorGUI.EndChangeCheck()) { SetMaskDirty(); } GUILayout.EndVertical(); }