180 lines
8.5 KiB
C#
180 lines
8.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
using UnityEngine.Rendering;
|
|
#if VEGETATION_STUDIO_PRO
|
|
using AwesomeTechnologies.VegetationSystem;
|
|
#endif
|
|
|
|
[CustomEditor(typeof(LakePolygonProfile)), CanEditMultipleObjects]
|
|
public class LakePolygonProfileEditor : Editor
|
|
{
|
|
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
EditorGUI.BeginChangeCheck();
|
|
|
|
LakePolygonProfile lakePolygon = (LakePolygonProfile)target;
|
|
GUILayout.Label("Basic: ", EditorStyles.boldLabel);
|
|
lakePolygon.lakeMaterial = (Material)EditorGUILayout.ObjectField("Material", lakePolygon.lakeMaterial, typeof(Material), false);
|
|
|
|
GUILayout.Label("Mesh settings:", EditorStyles.boldLabel);
|
|
EditorGUI.indentLevel++;
|
|
|
|
lakePolygon.maximumTriangleSize = EditorGUILayout.FloatField("Maximum triangle size", lakePolygon.maximumTriangleSize);
|
|
lakePolygon.traingleDensity = 1 / (float)EditorGUILayout.IntSlider("Spline density", (int)(1 / (float)lakePolygon.traingleDensity), 1, 100);
|
|
lakePolygon.uvScale = EditorGUILayout.FloatField("UV scale", lakePolygon.uvScale);
|
|
|
|
|
|
|
|
GUILayout.Label("Flow Map Automatic: ", EditorStyles.boldLabel);
|
|
lakePolygon.automaticFlowMapScale = EditorGUILayout.FloatField("Automatic speed", lakePolygon.automaticFlowMapScale);
|
|
lakePolygon.noiseflowMap = EditorGUILayout.Toggle("Add noise", lakePolygon.noiseflowMap);
|
|
if (lakePolygon.noiseflowMap)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
lakePolygon.noiseMultiplierflowMap = EditorGUILayout.FloatField("Noise multiplier inside", lakePolygon.noiseMultiplierflowMap);
|
|
lakePolygon.noiseSizeXflowMap = EditorGUILayout.FloatField("Noise scale X", lakePolygon.noiseSizeXflowMap);
|
|
lakePolygon.noiseSizeZflowMap = EditorGUILayout.FloatField("Noise scale Z", lakePolygon.noiseSizeZflowMap);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
|
|
|
|
|
|
GUILayout.Label("Terrain carve:", EditorStyles.boldLabel);
|
|
EditorGUI.indentLevel++;
|
|
lakePolygon.terrainCarve = EditorGUILayout.CurveField("Terrain carve", lakePolygon.terrainCarve);
|
|
lakePolygon.distSmooth = EditorGUILayout.FloatField("Smooth distance", lakePolygon.distSmooth);
|
|
lakePolygon.terrainSmoothMultiplier = EditorGUILayout.FloatField("Smooth", lakePolygon.terrainSmoothMultiplier);
|
|
|
|
lakePolygon.noiseCarve = EditorGUILayout.Toggle("Add noise", lakePolygon.noiseCarve);
|
|
if (lakePolygon.noiseCarve)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
lakePolygon.noiseMultiplierInside = EditorGUILayout.FloatField("Noise multiplier inside", lakePolygon.noiseMultiplierInside);
|
|
lakePolygon.noiseMultiplierOutside = EditorGUILayout.FloatField("Noise multiplier outside", lakePolygon.noiseMultiplierOutside);
|
|
lakePolygon.noiseSizeX = EditorGUILayout.FloatField("Noise scale X", lakePolygon.noiseSizeX);
|
|
lakePolygon.noiseSizeZ = EditorGUILayout.FloatField("Noise scale Z", lakePolygon.noiseSizeZ);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
|
|
EditorGUI.indentLevel--;
|
|
|
|
GUILayout.Label("Terrain paint:", EditorStyles.boldLabel);
|
|
EditorGUI.indentLevel++;
|
|
|
|
lakePolygon.terrainPaintCarve = EditorGUILayout.CurveField("Terrain paint", lakePolygon.terrainPaintCarve);
|
|
|
|
Terrain terrain = Terrain.activeTerrain;
|
|
|
|
if (terrain != null && terrain.terrainData != null)
|
|
{
|
|
int splatNumber = terrain.terrainData.terrainLayers.Length;
|
|
if (splatNumber > 0)
|
|
{
|
|
string[] options = new string[splatNumber];
|
|
for (int i = 0; i < splatNumber; i++)
|
|
{
|
|
options[i] = i + " - ";
|
|
if (terrain.terrainData.terrainLayers[i] != null && terrain.terrainData.terrainLayers[i].diffuseTexture != null)
|
|
{
|
|
options[i] += terrain.terrainData.terrainLayers[i].diffuseTexture.name;
|
|
}
|
|
}
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
GUILayout.Label(" Splat id:");
|
|
lakePolygon.currentSplatMap = EditorGUILayout.Popup(lakePolygon.currentSplatMap, options);
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
|
|
lakePolygon.noisePaint = EditorGUILayout.Toggle("Add noise", lakePolygon.noisePaint);
|
|
if (lakePolygon.noisePaint)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
lakePolygon.noiseMultiplierInsidePaint = EditorGUILayout.FloatField("Noise multiplier inside", lakePolygon.noiseMultiplierInsidePaint);
|
|
lakePolygon.noiseMultiplierOutsidePaint = EditorGUILayout.FloatField("Noise multiplier outside", lakePolygon.noiseMultiplierOutsidePaint);
|
|
lakePolygon.noiseSizeXPaint = EditorGUILayout.FloatField("Noise scale X", lakePolygon.noiseSizeXPaint);
|
|
lakePolygon.noiseSizeZPaint = EditorGUILayout.FloatField("Noise scale Z", lakePolygon.noiseSizeZPaint);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
|
|
|
|
lakePolygon.mixTwoSplatMaps = EditorGUILayout.Toggle("Mix two splat maps", lakePolygon.mixTwoSplatMaps);
|
|
if (lakePolygon.mixTwoSplatMaps)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.BeginHorizontal();
|
|
GUILayout.Label(" Second splat id:");
|
|
lakePolygon.secondSplatMap = EditorGUILayout.Popup(lakePolygon.secondSplatMap, options);
|
|
EditorGUILayout.EndHorizontal();
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
|
|
lakePolygon.addCliffSplatMap = EditorGUILayout.Toggle("Add cliff splatmap", lakePolygon.addCliffSplatMap);
|
|
if (lakePolygon.addCliffSplatMap)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.BeginHorizontal();
|
|
GUILayout.Label(" Cliff splat id:");
|
|
lakePolygon.cliffSplatMap = EditorGUILayout.Popup(lakePolygon.cliffSplatMap, options);
|
|
EditorGUILayout.EndHorizontal();
|
|
lakePolygon.cliffAngle = EditorGUILayout.FloatField("Cliff angle", lakePolygon.cliffAngle);
|
|
lakePolygon.cliffBlend = EditorGUILayout.FloatField("Cliff blend", lakePolygon.cliffBlend);
|
|
|
|
EditorGUILayout.Space();
|
|
EditorGUILayout.BeginHorizontal();
|
|
GUILayout.Label(" Cliff outside splat id:");
|
|
lakePolygon.cliffSplatMapOutside = EditorGUILayout.Popup(lakePolygon.cliffSplatMapOutside, options);
|
|
EditorGUILayout.EndHorizontal();
|
|
lakePolygon.cliffAngleOutside = EditorGUILayout.FloatField("Cliff outside angle", lakePolygon.cliffAngleOutside);
|
|
lakePolygon.cliffBlendOutside = EditorGUILayout.FloatField("Cliff outside blend", lakePolygon.cliffBlendOutside);
|
|
EditorGUI.indentLevel--;
|
|
|
|
|
|
}
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUI.indentLevel--;
|
|
|
|
}
|
|
}
|
|
EditorGUILayout.Space();
|
|
GUILayout.Label("Terrain clear foliage:", EditorStyles.boldLabel);
|
|
|
|
EditorGUI.indentLevel++;
|
|
lakePolygon.distanceClearFoliage = EditorGUILayout.FloatField("Remove Details Distance", lakePolygon.distanceClearFoliage);
|
|
|
|
|
|
lakePolygon.distanceClearFoliageTrees = EditorGUILayout.FloatField("Remove Trees Distance", lakePolygon.distanceClearFoliageTrees);
|
|
|
|
|
|
EditorGUI.indentLevel--;
|
|
|
|
GUILayout.Label("Lightning settings:", EditorStyles.boldLabel);
|
|
|
|
EditorGUI.indentLevel++;
|
|
lakePolygon.receiveShadows = EditorGUILayout.Toggle("Receive Shadows", lakePolygon.receiveShadows);
|
|
|
|
lakePolygon.shadowCastingMode = (ShadowCastingMode)EditorGUILayout.EnumPopup("Shadow Casting Mode", lakePolygon.shadowCastingMode);
|
|
EditorGUI.indentLevel--;
|
|
|
|
|
|
#if VEGETATION_STUDIO_PRO
|
|
GUILayout.Label("Vegetation stuio pro:", EditorStyles.boldLabel);
|
|
lakePolygon.biomeType = System.Convert.ToInt32(EditorGUILayout.EnumPopup("Select biome", (BiomeType)lakePolygon.biomeType));
|
|
#else
|
|
GUILayout.Label("Vegetation stuio:", EditorStyles.boldLabel);
|
|
lakePolygon.biomeType = EditorGUILayout.IntField("Select biome", lakePolygon.biomeType);
|
|
#endif
|
|
|
|
if(EditorGUI.EndChangeCheck())
|
|
{
|
|
EditorUtility.SetDirty(lakePolygon);
|
|
// AssetDatabase.Refresh();
|
|
}
|
|
}
|
|
}
|