public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUILayout.BeginHorizontal(); { foreach (SerializedProperty prop in property) { if (prop.propertyType == SerializedPropertyType.Vector4) { Rect area = EditorGUILayout.BeginVertical("box", GUILayout.MaxHeight(200)); { float rgbMin = 0; float rgbMax = 1; System.Type type = HvrColorGrading.ColorPrimariesRGBMinMax.defaultSettings.GetType(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo fi in fields) { if (prop.name == fi.Name) { object val = fi.GetValue(HvrColorGrading.ColorPrimariesRGBMinMax.defaultSettings); if (val.GetType() == typeof(Vector2)) { rgbMin = ((Vector2)val).x; rgbMax = ((Vector2)val).y; } } } prop.vector4Value = Primaries.DoGUI(area, prop.displayName, prop.vector4Value, rgbMin, rgbMax); } EditorGUILayout.EndVertical(); // Reset Color c = GUI.backgroundColor; GUI.backgroundColor = Color.grey; if (GUI.Button(new Rect(area.xMax - 30, area.y, 30, 30), icon_reset)) { System.Type type = HvrColorGrading.ColorPrimariesSettings.defaultSettings.GetType(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo fi in fields) { if (prop.name == fi.Name) { object val = fi.GetValue(HvrColorGrading.ColorPrimariesSettings.defaultSettings); if (val.GetType() == typeof(Vector4)) { prop.vector4Value = (Vector4)val; } } } } GUI.backgroundColor = c; } } } EditorGUILayout.EndHorizontal(); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { if (s_guistyleButton == null) { s_guistyleButton = new GUIStyle(GUI.skin.GetStyle("Button")) { alignment = TextAnchor.MiddleCenter, normal = new GUIStyleState() { background = EditorSharedResources.instance.hvrColorGradeNormal }, hover = new GUIStyleState() { background = EditorSharedResources.instance.hvrColorGradeHover }, active = new GUIStyleState() { background = EditorSharedResources.instance.hvrColorGradeActive }, padding = new RectOffset(2, 2, 2, 2) }; } EditorGUILayout.LabelField(label, EditorStyles.boldLabel); Color oGuiColor = GUI.color; EditorGUILayout.BeginHorizontal(); { GUILayout.FlexibleSpace(); foreach (SerializedProperty prop in property) { if (prop.propertyType == SerializedPropertyType.Vector4) { GUI.color = new Color(0.2f, 0.2f, 0.2f, 1.0f); Rect area = EditorGUILayout.BeginVertical(GUI.skin.GetStyle("HelpBox"), GUILayout.MaxHeight(200), GUILayout.MaxWidth(120), GUILayout.MinWidth(120)); { GUI.color = oGuiColor; float rgbMin = 0; float rgbMax = 1; System.Type type = HvrActorColorGrade.ColorPrimariesRGBMinMax.defaultSettings.GetType(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo fi in fields) { if (prop.name == fi.Name) { object val = fi.GetValue(HvrActorColorGrade.ColorPrimariesRGBMinMax.defaultSettings); if (val.GetType() == typeof(Vector2)) { rgbMin = ((Vector2)val).x; rgbMax = ((Vector2)val).y; } } } prop.vector4Value = Primaries.DoGUI(area, prop.displayName, prop.vector4Value, rgbMin, rgbMax); } EditorGUILayout.EndVertical(); // Reset if (GUI.Button(new Rect(area.xMax - 22, area.y + 2, 20, 20), "", s_guistyleButton)) { System.Type type = HvrActorColorGrade.ColorPrimariesSettings.defaultSettings.GetType(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo fi in fields) { if (prop.name == fi.Name) { object val = fi.GetValue(HvrActorColorGrade.ColorPrimariesSettings.defaultSettings); if (val.GetType() == typeof(Vector4)) { prop.vector4Value = (Vector4)val; } } } } } } GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); }