IMHOTEP Framework
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Pages
SunShaftsEditor.cs
1 using System;
2 using UnityEditor;
3 using UnityEngine;
4 
5 namespace UnityStandardAssets.ImageEffects
6 {
7  [CustomEditor (typeof(SunShafts))]
8  class SunShaftsEditor : Editor
9  {
10  SerializedObject serObj;
11 
12  SerializedProperty sunTransform;
13  SerializedProperty radialBlurIterations;
14  SerializedProperty sunColor;
15  SerializedProperty sunThreshold;
16  SerializedProperty sunShaftBlurRadius;
17  SerializedProperty sunShaftIntensity;
18  SerializedProperty useDepthTexture;
19  SerializedProperty resolution;
20  SerializedProperty screenBlendMode;
21  SerializedProperty maxRadius;
22 
23  void OnEnable () {
24  serObj = new SerializedObject (target);
25 
26  screenBlendMode = serObj.FindProperty("screenBlendMode");
27 
28  sunTransform = serObj.FindProperty("sunTransform");
29  sunColor = serObj.FindProperty("sunColor");
30  sunThreshold = serObj.FindProperty("sunThreshold");
31 
32  sunShaftBlurRadius = serObj.FindProperty("sunShaftBlurRadius");
33  radialBlurIterations = serObj.FindProperty("radialBlurIterations");
34 
35  sunShaftIntensity = serObj.FindProperty("sunShaftIntensity");
36 
37  resolution = serObj.FindProperty("resolution");
38 
39  maxRadius = serObj.FindProperty("maxRadius");
40 
41  useDepthTexture = serObj.FindProperty("useDepthTexture");
42  }
43 
44 
45  public override void OnInspectorGUI () {
46  serObj.Update ();
47 
48  EditorGUILayout.BeginHorizontal();
49 
50  EditorGUILayout.PropertyField (useDepthTexture, new GUIContent ("Rely on Z Buffer?"));
51  if ((target as SunShafts).GetComponent<Camera>())
52  GUILayout.Label("Current camera mode: "+ (target as SunShafts).GetComponent<Camera>().depthTextureMode, EditorStyles.miniBoldLabel);
53 
54  EditorGUILayout.EndHorizontal();
55 
56  // depth buffer need
57  /*
58  bool newVal = useDepthTexture.boolValue;
59  if (newVal != oldVal) {
60  if (newVal)
61  (target as SunShafts).camera.depthTextureMode |= DepthTextureMode.Depth;
62  else
63  (target as SunShafts).camera.depthTextureMode &= ~DepthTextureMode.Depth;
64  }
65  */
66 
67  EditorGUILayout.PropertyField (resolution, new GUIContent("Resolution"));
68  EditorGUILayout.PropertyField (screenBlendMode, new GUIContent("Blend mode"));
69 
70  EditorGUILayout.Separator ();
71 
72  EditorGUILayout.BeginHorizontal();
73 
74  EditorGUILayout.PropertyField (sunTransform, new GUIContent("Shafts caster", "Chose a transform that acts as a root point for the produced sun shafts"));
75  if ((target as SunShafts).sunTransform && (target as SunShafts).GetComponent<Camera>()) {
76  if (GUILayout.Button("Center on " + (target as SunShafts).GetComponent<Camera>().name)) {
77  if (EditorUtility.DisplayDialog ("Move sun shafts source?", "The SunShafts caster named "+ (target as SunShafts).sunTransform.name +"\n will be centered along "+(target as SunShafts).GetComponent<Camera>().name+". Are you sure? ", "Please do", "Don't")) {
78  Ray ray = (target as SunShafts).GetComponent<Camera>().ViewportPointToRay(new Vector3(0.5f,0.5f,0));
79  (target as SunShafts).sunTransform.position = ray.origin + ray.direction * 500.0f;
80  (target as SunShafts).sunTransform.LookAt ((target as SunShafts).transform);
81  }
82  }
83  }
84 
85  EditorGUILayout.EndHorizontal();
86 
87  EditorGUILayout.Separator ();
88 
89  EditorGUILayout.PropertyField (sunThreshold, new GUIContent ("Threshold color"));
90  EditorGUILayout.PropertyField (sunColor, new GUIContent ("Shafts color"));
91  maxRadius.floatValue = 1.0f - EditorGUILayout.Slider ("Distance falloff", 1.0f - maxRadius.floatValue, 0.1f, 1.0f);
92 
93  EditorGUILayout.Separator ();
94 
95  sunShaftBlurRadius.floatValue = EditorGUILayout.Slider ("Blur size", sunShaftBlurRadius.floatValue, 1.0f, 10.0f);
96  radialBlurIterations.intValue = EditorGUILayout.IntSlider ("Blur iterations", radialBlurIterations.intValue, 1, 3);
97 
98  EditorGUILayout.Separator ();
99 
100  EditorGUILayout.PropertyField (sunShaftIntensity, new GUIContent("Intensity"));
101 
102  serObj.ApplyModifiedProperties();
103  }
104  }
105 }