IMHOTEP Framework
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Pages
ColorCorrectionCurvesEditor.cs
1 using System;
2 using UnityEditor;
3 using UnityEngine;
4 
5 namespace UnityStandardAssets.ImageEffects
6 {
7  [CustomEditor (typeof(ColorCorrectionCurves))]
8  class ColorCorrectionCurvesEditor : Editor {
9  SerializedObject serObj;
10 
11  SerializedProperty mode;
12 
13  SerializedProperty redChannel;
14  SerializedProperty greenChannel;
15  SerializedProperty blueChannel;
16 
17  SerializedProperty useDepthCorrection;
18 
19  SerializedProperty depthRedChannel;
20  SerializedProperty depthGreenChannel;
21  SerializedProperty depthBlueChannel;
22 
23  SerializedProperty zCurveChannel;
24 
25  SerializedProperty saturation;
26 
27  SerializedProperty selectiveCc;
28  SerializedProperty selectiveFromColor;
29  SerializedProperty selectiveToColor;
30 
31  private bool applyCurveChanges = false;
32 
33  void OnEnable () {
34  serObj = new SerializedObject (target);
35 
36  mode = serObj.FindProperty ("mode");
37 
38  saturation = serObj.FindProperty ("saturation");
39 
40  redChannel = serObj.FindProperty ("redChannel");
41  greenChannel = serObj.FindProperty ("greenChannel");
42  blueChannel = serObj.FindProperty ("blueChannel");
43 
44  useDepthCorrection = serObj.FindProperty ("useDepthCorrection");
45 
46  zCurveChannel = serObj.FindProperty ("zCurve");
47 
48  depthRedChannel = serObj.FindProperty ("depthRedChannel");
49  depthGreenChannel = serObj.FindProperty ("depthGreenChannel");
50  depthBlueChannel = serObj.FindProperty ("depthBlueChannel");
51 
52  serObj.ApplyModifiedProperties ();
53 
54  selectiveCc = serObj.FindProperty ("selectiveCc");
55  selectiveFromColor = serObj.FindProperty ("selectiveFromColor");
56  selectiveToColor = serObj.FindProperty ("selectiveToColor");
57  }
58 
59  void CurveGui ( string name, SerializedProperty animationCurve, Color color) {
60  // @NOTE: EditorGUILayout.CurveField is buggy and flickers, using PropertyField for now
61  //animationCurve.animationCurveValue = EditorGUILayout.CurveField (GUIContent (name), animationCurve.animationCurveValue, color, Rect (0.0f,0.0f,1.0f,1.0f));
62  EditorGUILayout.PropertyField (animationCurve, new GUIContent (name));
63  if (GUI.changed)
64  applyCurveChanges = true;
65  }
66 
67  void BeginCurves () {
68  applyCurveChanges = false;
69  }
70 
71  void ApplyCurves () {
72  if (applyCurveChanges) {
73  serObj.ApplyModifiedProperties ();
74  (serObj.targetObject as ColorCorrectionCurves).gameObject.SendMessage ("UpdateTextures");
75  }
76  }
77 
78 
79  public override void OnInspectorGUI () {
80  serObj.Update ();
81 
82  GUILayout.Label ("Use curves to tweak RGB channel colors", EditorStyles.miniBoldLabel);
83 
84  saturation.floatValue = EditorGUILayout.Slider( "Saturation", saturation.floatValue, 0.0f, 5.0f);
85 
86  EditorGUILayout.PropertyField (mode, new GUIContent ("Mode"));
87  EditorGUILayout.Separator ();
88 
89  BeginCurves ();
90 
91  CurveGui (" Red", redChannel, Color.red);
92  CurveGui (" Green", greenChannel, Color.green);
93  CurveGui (" Blue", blueChannel, Color.blue);
94 
95  EditorGUILayout.Separator ();
96 
97  if (mode.intValue > 0)
98  useDepthCorrection.boolValue = true;
99  else
100  useDepthCorrection.boolValue = false;
101 
102  if (useDepthCorrection.boolValue) {
103  CurveGui (" Red (depth)", depthRedChannel, Color.red);
104  CurveGui (" Green (depth)", depthGreenChannel, Color.green);
105  CurveGui (" Blue (depth)", depthBlueChannel, Color.blue);
106  EditorGUILayout.Separator ();
107  CurveGui (" Blend Curve", zCurveChannel, Color.grey);
108  }
109 
110  EditorGUILayout.Separator ();
111  EditorGUILayout.PropertyField (selectiveCc, new GUIContent ("Selective"));
112  if (selectiveCc.boolValue) {
113  EditorGUILayout.PropertyField (selectiveFromColor, new GUIContent (" Key"));
114  EditorGUILayout.PropertyField (selectiveToColor, new GUIContent (" Target"));
115  }
116 
117 
118  ApplyCurves ();
119 
120  if (!applyCurveChanges)
121  serObj.ApplyModifiedProperties ();
122  }
123  }
124 }