1 using UnityEngine;
2 using
UnityEditor;
3
4 namespace
UnityStandardAssets.Water
5 {
6     
[CustomEditor(typeof(SpecularLighting))]
7     
public class SpecularLightingEditor : Editor
8     {
9         
private SerializedObject serObj;
10         
private SerializedProperty specularLight;
11
12         
public void OnEnable()
13         {
14             serObj =
new SerializedObject(target);
15             specularLight = serObj.FindProperty(
"specularLight");
16         }
17
18         
public override void OnInspectorGUI()
19         {
20             serObj.Update();
21
22             GameObject go = ((SpecularLighting)serObj.targetObject).gameObject;
23             WaterBase wb = (WaterBase)go.GetComponent(
typeof(WaterBase));
24
25             
if (!wb.sharedMaterial)
26                 
return;
27
28             
if (wb.sharedMaterial.HasProperty("_WorldLightDir"))
29             {
30                 GUILayout.Label(
"Transform casting specular highlights", EditorStyles.miniBoldLabel);
31                 EditorGUILayout.PropertyField(specularLight,
new GUIContent("Specular light"));
32
33                 
if (wb.sharedMaterial.HasProperty("_SpecularColor"))
34                     WaterEditorUtility.SetMaterialColor(
35                         
"_SpecularColor",
36                         EditorGUILayout.ColorField(
"Specular",
37                         WaterEditorUtility.GetMaterialColor(
"_SpecularColor", wb.sharedMaterial)),
38                         wb.sharedMaterial);
39                 
if (wb.sharedMaterial.HasProperty("_Shininess"))
40                     WaterEditorUtility.SetMaterialFloat(
"_Shininess", EditorGUILayout.Slider(
41                         
"Specular power",
42                         WaterEditorUtility.GetMaterialFloat(
"_Shininess", wb.sharedMaterial),
43                         
0.0F, 500.0F), wb.sharedMaterial);
44             }
45             
else
46                 GUILayout.Label(
"The shader doesn't have the needed _WorldLightDir property.", EditorStyles.miniBoldLabel);
47
48             serObj.ApplyModifiedProperties();
49         }
50
51     }
52 }