コード例 #1
0
            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();
            }