|
|
- using UnityEngine;
- using System;
- using UnityEditor;
-
- [CustomEditor(typeof(GerstnerDisplace))]
- public class GerstnerDisplaceEditor : Editor
- {
- private SerializedObject serObj;
-
- public void OnEnable ()
- {
- serObj = new SerializedObject (target);
- }
-
- public override void OnInspectorGUI ()
- {
- serObj.Update();
-
- GameObject go = ((GerstnerDisplace)serObj.targetObject).gameObject;
- WaterBase wb = (WaterBase)go.GetComponent(typeof(WaterBase));
- Material sharedWaterMaterial = wb.sharedMaterial;
-
- GUILayout.Label ("Animates vertices using up 4 generated waves", EditorStyles.miniBoldLabel);
-
- if(sharedWaterMaterial)
- {
- Vector4 amplitude = WaterEditorUtility.GetMaterialVector("_GAmplitude", sharedWaterMaterial);
- Vector4 frequency = WaterEditorUtility.GetMaterialVector("_GFrequency", sharedWaterMaterial);
- Vector4 steepness = WaterEditorUtility.GetMaterialVector("_GSteepness", sharedWaterMaterial);
- Vector4 speed = WaterEditorUtility.GetMaterialVector("_GSpeed", sharedWaterMaterial);
- Vector4 directionAB = WaterEditorUtility.GetMaterialVector("_GDirectionAB", sharedWaterMaterial);
- Vector4 directionCD = WaterEditorUtility.GetMaterialVector("_GDirectionCD", sharedWaterMaterial);
-
- amplitude = EditorGUILayout.Vector4Field("Amplitude (Height offset)", amplitude);
- frequency = EditorGUILayout.Vector4Field("Frequency (Tiling)", frequency);
- steepness = EditorGUILayout.Vector4Field("Steepness", steepness);
- speed = EditorGUILayout.Vector4Field("Speed", speed);
- directionAB = EditorGUILayout.Vector4Field("Direction scale (Wave 1 (X,Y) and 2 (Z,W))", directionAB);
- directionCD = EditorGUILayout.Vector4Field("Direction scale (Wave 3 (X,Y) and 4 (Z,W))", directionCD);
-
- if (GUI.changed) {
- WaterEditorUtility.SetMaterialVector("_GAmplitude", amplitude, sharedWaterMaterial);
- WaterEditorUtility.SetMaterialVector("_GFrequency", frequency, sharedWaterMaterial);
- WaterEditorUtility.SetMaterialVector("_GSteepness", steepness, sharedWaterMaterial);
- WaterEditorUtility.SetMaterialVector("_GSpeed", speed, sharedWaterMaterial);
- WaterEditorUtility.SetMaterialVector("_GDirectionAB", directionAB, sharedWaterMaterial);
- WaterEditorUtility.SetMaterialVector("_GDirectionCD", directionCD, sharedWaterMaterial);
- }
-
- /*
-
- Vector4 animationTiling = WaterEditorUtility.GetMaterialVector("_AnimationTiling", sharedWaterMaterial);
- Vector4 animationDirection = WaterEditorUtility.GetMaterialVector("_AnimationDirection", sharedWaterMaterial);
-
- float firstTilingU = animationTiling.x*100.0F;
- float firstTilingV = animationTiling.y*100.0F;
- float firstDirectionU = animationDirection.x;
- float firstDirectionV = animationDirection.y;
-
- float secondTilingU = animationTiling.z*100.0F;
- float secondTilingV = animationTiling.w*100.0F;
- float secondDirectionU = animationDirection.z;
- float secondDirectionV = animationDirection.w;
-
-
- EditorGUILayout.BeginHorizontal ();
- firstTilingU = EditorGUILayout.FloatField("First Tiling U", firstTilingU);
- firstTilingV = EditorGUILayout.FloatField("First Tiling V", firstTilingV);
- EditorGUILayout.EndHorizontal ();
- EditorGUILayout.BeginHorizontal ();
- secondTilingU = EditorGUILayout.FloatField("Second Tiling U", secondTilingU);
- secondTilingV = EditorGUILayout.FloatField("Second Tiling V", secondTilingV);
- EditorGUILayout.EndHorizontal ();
-
- EditorGUILayout.BeginHorizontal ();
- firstDirectionU = EditorGUILayout.FloatField("1st Animation U", firstDirectionU);
- firstDirectionV = EditorGUILayout.FloatField("1st Animation V", firstDirectionV);
- EditorGUILayout.EndHorizontal ();
- EditorGUILayout.BeginHorizontal ();
- secondDirectionU = EditorGUILayout.FloatField("2nd Animation U", secondDirectionU);
- secondDirectionV = EditorGUILayout.FloatField("2nd Animation V", secondDirectionV);
- EditorGUILayout.EndHorizontal ();
-
- animationDirection = new Vector4(firstDirectionU,firstDirectionV, secondDirectionU,secondDirectionV);
- animationTiling = new Vector4(firstTilingU/100.0F,firstTilingV/100.0F, secondTilingU/100.0F,secondTilingV/100.0F);
-
- WaterEditorUtility.SetMaterialVector("_AnimationTiling", animationTiling, sharedWaterMaterial);
- WaterEditorUtility.SetMaterialVector("_AnimationDirection", animationDirection, sharedWaterMaterial);
-
- EditorGUILayout.Separator ();
-
- GUILayout.Label ("Displacement Strength", EditorStyles.boldLabel);
-
- float heightDisplacement = WaterEditorUtility.GetMaterialFloat("_HeightDisplacement", sharedWaterMaterial);
-
- heightDisplacement = EditorGUILayout.Slider("Height", heightDisplacement, 0.0F, 5.0F);
- WaterEditorUtility.SetMaterialFloat("_HeightDisplacement", heightDisplacement, sharedWaterMaterial);
- */
- }
-
- serObj.ApplyModifiedProperties();
- }
- }
|