CapersProject/Assets/Toon Water URP/Editor/ToonWaterInspector.cs
2024-09-02 14:06:21 +09:00

159 lines
7.4 KiB
C#

using UnityEngine;
using UnityEditor;
using System;
public class ToonWaterInspector : ShaderGUI
{
private const string SHALLOW_WATER_COLOR_ID = "Color_1139F668";
private const string DEEP_WATER_COLOR_ID = "Color_198818EE";
private const string SPECULAR_COLOR_ID = "Color_77A2EDE9";
private const string FOAM_COLOR_ID = "Color_626750DD";
private const string SPECULAR_ID = "Vector1_301E02E2";
private const string WATER_DEPTH_ID = "Vector1_45F25267";
private const string REFRACTION_STRENGTH_ID = "Vector1_31894ABB";
private const string USE_REFRACTION_IN_DEPTH_BASED_WATER_COLOR = "Boolean_2918AA79";
private const string WAVE_DIRECTION_ID = "Vector2_D26C9C89";
private const string WAVE_SIZE_ID = "Vector2_1E1B6943";
private const string WAVE_SPEED_ID = "_Wave_Speed";
private const string WAVE_HEIGHT_ID = "_Wave_Height";
private const string NORMALS_STRENGTH_ID = "Vector1_9C73072A";
private const string SPECULAR_CUTOFF_ID = "Vector1_20DB7652";
private const string FOAM_AMOUNT_ID = "Vector1_854A7D8C";
private const string FOAM_CUTOFF_ID = "Vector1_E71BB35E";
private const string FOAM_DIRECTION_ID = "Vector2_D06E76BC";
private const string FOAM_SCALE_ID = "Vector2_F678228C";
private const string FRESNEL_POWER_ID = "Vector1_A524D234";
private const string SPECULAR_EDGES_SMOOTHNESS_FACTOR_ID = "Vector1_B9CC1720";
private const string REFLECTION_VISIBILITY_ID = "Vector1_3632ABA2";
private const string REFLECTION_DISTORTION_STRENGHT = "Vector1_738B39CF";
private static bool colorsFoldout = true;
private static bool lightningFoldout = false;
private static bool fresnelFoldout = false;
private static bool refractionFoldout = false;
private static bool foamFoldout = false;
private static bool wavesFoldout = false;
private static bool reflectionFoldout = false;
public override void OnGUI(MaterialEditor editor, MaterialProperty[] properties)
{
GUILayout.BeginHorizontal();
GUILayout.Label(Resources.Load<Texture>("TOON_WATER_LOGO"), GUILayout.Width(308), GUILayout.Height(244));
GUILayout.EndHorizontal();
//WATER COLORS
colorsFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(colorsFoldout, "Water Colors");
if(colorsFoldout)
{
MaterialProperty waterDepth = FindProperty(WATER_DEPTH_ID, properties);
editor.FloatProperty(waterDepth, "Water Depth");
MaterialProperty shallowColor = FindProperty(SHALLOW_WATER_COLOR_ID, properties);
editor.ColorProperty(shallowColor, "Shallow Water Color");
MaterialProperty deepColor = FindProperty(DEEP_WATER_COLOR_ID, properties);
editor.ColorProperty(deepColor, "Deep Water Color");
}
EditorGUILayout.EndFoldoutHeaderGroup();
//LIGHTNING
lightningFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(lightningFoldout, "Light settings");
if(lightningFoldout)
{
MaterialProperty specularPower = FindProperty(SPECULAR_ID, properties);
editor.RangeProperty(specularPower, "Specular Power");
MaterialProperty specularCutoff = FindProperty(SPECULAR_CUTOFF_ID, properties);
editor.RangeProperty(specularCutoff, "Specular Cutoff");
MaterialProperty specularEdgesSmoothnessFactor = FindProperty(SPECULAR_EDGES_SMOOTHNESS_FACTOR_ID, properties);
editor.RangeProperty(specularEdgesSmoothnessFactor, "Specular Edges Smoothness Factor");
MaterialProperty specularColor = FindProperty(SPECULAR_COLOR_ID, properties);
editor.ColorProperty(specularColor, "Specular Color");
MaterialProperty normalsStrenght = FindProperty(NORMALS_STRENGTH_ID, properties);
editor.FloatProperty(normalsStrenght, "Normals Strength");
}
EditorGUILayout.EndFoldoutHeaderGroup();
//FRESNEL
fresnelFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(fresnelFoldout, "Fresnel");
if(fresnelFoldout)
{
MaterialProperty fresnelPower = FindProperty(FRESNEL_POWER_ID, properties);
editor.RangeProperty(fresnelPower, "Fresnel Power");
if(fresnelPower.floatValue <= 0)
EditorGUILayout.HelpBox("When Fresnel Power is set to 0 effect is disabled and Planar Reflections will not be visible!", MessageType.Info);
}
EditorGUILayout.EndFoldoutHeaderGroup();
//REFRACTION
refractionFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(refractionFoldout, "Refraction");
if(refractionFoldout)
{
MaterialProperty refractionStrenght = FindProperty(REFRACTION_STRENGTH_ID, properties);
editor.RangeProperty(refractionStrenght, "Refraction Strength");
MaterialProperty useRefraction = FindProperty(USE_REFRACTION_IN_DEPTH_BASED_WATER_COLOR, properties);
useRefraction.floatValue = EditorGUILayout.Toggle("Use Refraction In Depth Based Water Color", useRefraction.floatValue > 0) ? 1 : 0;
}
EditorGUILayout.EndFoldoutHeaderGroup();
//REFLECTION
reflectionFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(reflectionFoldout, "Planar Reflections");
if(reflectionFoldout)
{
MaterialProperty reflectionVisiblity = FindProperty(REFLECTION_VISIBILITY_ID, properties);
editor.RangeProperty(reflectionVisiblity, "Reflection Visibility");
MaterialProperty reflectionDistortion = FindProperty(REFLECTION_DISTORTION_STRENGHT, properties);
editor.RangeProperty(reflectionDistortion, "Reflection Distortion Strenght");
}
EditorGUILayout.EndFoldoutHeaderGroup();
//FOAM
foamFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(foamFoldout, "Foam");
if(foamFoldout)
{
MaterialProperty foamColor = FindProperty(FOAM_COLOR_ID, properties);
editor.ColorProperty(foamColor, "Foam Color");
MaterialProperty foamAmount = FindProperty(FOAM_AMOUNT_ID, properties);
editor.FloatProperty(foamAmount, "Foam Amount");
MaterialProperty foamCutoff = FindProperty(FOAM_CUTOFF_ID, properties);
editor.FloatProperty(foamCutoff, "Foam Cutoff");
MaterialProperty foamDirection = FindProperty(FOAM_DIRECTION_ID, properties);
editor.VectorProperty(foamDirection, "Foam Direction");
MaterialProperty foamScale = FindProperty(FOAM_SCALE_ID, properties);
editor.VectorProperty(foamScale, "Foam Scale");
}
EditorGUILayout.EndFoldoutHeaderGroup();
//WAVES
wavesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(wavesFoldout, "Waves");
if(wavesFoldout)
{
MaterialProperty waveDir = FindProperty(WAVE_DIRECTION_ID, properties);
editor.VectorProperty(waveDir, "Wave Direction");
MaterialProperty waveSize = FindProperty(WAVE_SIZE_ID, properties);
editor.VectorProperty(waveSize, "Wave Size");
MaterialProperty waveHeight = FindProperty(WAVE_HEIGHT_ID, properties);
editor.RangeProperty(waveHeight, "Wave Height");
MaterialProperty waveSpeed = FindProperty(WAVE_SPEED_ID, properties);
editor.RangeProperty(waveSpeed, "Wave Speed");
}
EditorGUILayout.EndFoldoutHeaderGroup();
}
}