113 lines
4.8 KiB
C#
113 lines
4.8 KiB
C#
![]() |
//Stylized Water 2
|
|||
|
//Staggart Creations (http://staggart.xyz)
|
|||
|
//Copyright protected under Unity Asset Store EULA
|
|||
|
|
|||
|
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace StylizedWater2
|
|||
|
{
|
|||
|
[CustomEditor(typeof(WaterGrid))]
|
|||
|
public class CreateWaterGridInspector : Editor
|
|||
|
{
|
|||
|
private WaterGrid script;
|
|||
|
|
|||
|
private SerializedProperty material;
|
|||
|
private SerializedProperty followSceneCamera;
|
|||
|
private SerializedProperty autoAssignCamera;
|
|||
|
private SerializedProperty followTarget;
|
|||
|
|
|||
|
private SerializedProperty scale;
|
|||
|
private SerializedProperty vertexDistance;
|
|||
|
private SerializedProperty rowsColumns;
|
|||
|
|
|||
|
private int vertexCount;
|
|||
|
|
|||
|
private void OnEnable()
|
|||
|
{
|
|||
|
script = (WaterGrid) target;
|
|||
|
script.m_rowsColumns = script.rowsColumns;
|
|||
|
|
|||
|
material = serializedObject.FindProperty("material");
|
|||
|
followSceneCamera = serializedObject.FindProperty("followSceneCamera");
|
|||
|
autoAssignCamera = serializedObject.FindProperty("autoAssignCamera");
|
|||
|
followTarget = serializedObject.FindProperty("followTarget");
|
|||
|
|
|||
|
scale = serializedObject.FindProperty("scale");
|
|||
|
vertexDistance = serializedObject.FindProperty("vertexDistance");
|
|||
|
rowsColumns = serializedObject.FindProperty("rowsColumns");
|
|||
|
}
|
|||
|
|
|||
|
public override void OnInspectorGUI()
|
|||
|
{
|
|||
|
UI.DrawHeader();
|
|||
|
|
|||
|
using (new EditorGUILayout.HorizontalScope())
|
|||
|
{
|
|||
|
GUILayout.Space(EditorGUIUtility.labelWidth);
|
|||
|
WaterGrid.DisplayGrid = GUILayout.Toggle(WaterGrid.DisplayGrid , new GUIContent(" Display Grid", EditorGUIUtility.IconContent((WaterGrid.DisplayGrid ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button");
|
|||
|
WaterGrid.DisplayWireframe = GUILayout.Toggle(WaterGrid.DisplayWireframe, new GUIContent(" Show Wireframe", EditorGUIUtility.IconContent((WaterGrid.DisplayWireframe ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button");
|
|||
|
}
|
|||
|
|
|||
|
serializedObject.Update();
|
|||
|
EditorGUI.BeginChangeCheck();
|
|||
|
|
|||
|
EditorGUILayout.LabelField("Appearance", EditorStyles.boldLabel);
|
|||
|
EditorGUILayout.PropertyField(material);
|
|||
|
if(material.objectReferenceValue == null) EditorGUILayout.HelpBox("A material must be assigned", MessageType.Error);
|
|||
|
|
|||
|
EditorGUILayout.Space();
|
|||
|
|
|||
|
EditorGUILayout.LabelField("Movement", EditorStyles.boldLabel);
|
|||
|
|
|||
|
EditorGUILayout.PropertyField(followSceneCamera);
|
|||
|
using (new EditorGUI.DisabledScope(autoAssignCamera.boolValue))
|
|||
|
{
|
|||
|
EditorGUILayout.PropertyField(followTarget);
|
|||
|
}
|
|||
|
EditorGUI.indentLevel++;
|
|||
|
EditorGUILayout.PropertyField(autoAssignCamera);
|
|||
|
EditorGUI.indentLevel--;
|
|||
|
|
|||
|
EditorGUILayout.Space();
|
|||
|
|
|||
|
EditorGUILayout.LabelField("Grid geometry", EditorStyles.boldLabel);
|
|||
|
|
|||
|
EditorGUILayout.PropertyField(scale, GUILayout.MaxWidth(EditorGUIUtility.labelWidth + 95f));
|
|||
|
|
|||
|
using (new EditorGUILayout.HorizontalScope())
|
|||
|
{
|
|||
|
EditorGUILayout.PrefixLabel(rowsColumns.displayName);
|
|||
|
using (new EditorGUI.DisabledScope(rowsColumns.intValue <= 0))
|
|||
|
{
|
|||
|
if (GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.Width(25f)))
|
|||
|
{
|
|||
|
rowsColumns.intValue--;
|
|||
|
}
|
|||
|
}
|
|||
|
EditorGUILayout.PropertyField(rowsColumns, GUIContent.none, GUILayout.MaxWidth(40f));
|
|||
|
if (GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.Width(25f)))
|
|||
|
{
|
|||
|
rowsColumns.intValue++;
|
|||
|
}
|
|||
|
EditorGUILayout.LabelField($"= {rowsColumns.intValue * rowsColumns.intValue} tiles", EditorStyles.miniLabel);
|
|||
|
}
|
|||
|
|
|||
|
EditorGUILayout.Space();
|
|||
|
|
|||
|
EditorGUILayout.PropertyField(vertexDistance, new GUIContent("Min. vertex distance", vertexDistance.tooltip));
|
|||
|
vertexCount = Mathf.FloorToInt(((scale.floatValue / rowsColumns.intValue) / vertexDistance.floatValue) * ((scale.floatValue / rowsColumns.intValue) / vertexDistance.floatValue));
|
|||
|
//EditorGUILayout.HelpBox($"Vertex count: {vertexCount}", MessageType.None);
|
|||
|
|
|||
|
if (EditorGUI.EndChangeCheck())
|
|||
|
{
|
|||
|
serializedObject.ApplyModifiedProperties();
|
|||
|
|
|||
|
//Executed here since objects can't be destroyed from OnValidate
|
|||
|
script.Recreate();
|
|||
|
}
|
|||
|
|
|||
|
UI.DrawFooter();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|