Esempio n. 1
0
        private int?DisplayFlags(Property.Data data)
        {
            GUILayout.BeginVertical();

            int?flag_value = Property.Data.GetInt(data);

            if (!flag_value.HasValue)
            {
                flag_value = 0;
            }

            System.Type enum_type = System.Type.GetType(data.associatedEnumType);
            string[]    names     = Enum.GetNames(enum_type);
            int[]       values    = (int[])Enum.GetValues(enum_type);

            for (int j = 0; j < names.Length; j++)
            {
                flag_value = Flags.Toogle(flag_value.Value, values[j], GUILayout.Toggle(Flags.IsSet(flag_value.Value, values[j]), names[j].Replace("_", " ")));
            }

            GUILayout.EndVertical();

            return(flag_value);
        }
Esempio n. 2
0
        private bool DisplayMenuItem(Property.Data data, bool enabled)
        {
            bool changed = false;

            if (enabled)
            {
                string value = data.currentValue;

                switch (data.propertyType)
                {
                case Property.Type.BOOL:
                    bool?toogle_value = Property.Data.GetBool(data);

                    if (toogle_value.HasValue)
                    {
                        value = GUILayout.Toggle(toogle_value.Value, data.optionText).ToString();
                    }
                    else
                    {
                        value = Boolean.FalseString;
                    }

                    break;

                case Property.Type.FLAG:
                    int?flag_value = DisplayFlags(data);

                    if (flag_value.HasValue)
                    {
                        value = ((int)flag_value.Value).ToString();
                    }

                    break;

                case Property.Type.INT:
                case Property.Type.FLOAT:
                    GUILayout.BeginHorizontal();
                    GUILayout.Label(data.optionText);

                    value = GUILayout.TextField(data.currentValue, GUILayout.Width(75));

                    GUILayout.EndHorizontal();

                    break;

                case Property.Type.STRING:
                    GUILayout.BeginHorizontal();
                    GUILayout.Label(data.optionText);

                    List <string> value_list = List.Parse(data.currentValue);

                    GUILayout.FlexibleSpace();
                    GUILayout.BeginVertical();
                    List.DisplayConfiguration(value_list, GUILayout.Width(75));
                    GUILayout.EndVertical();

                    value = List.Serialize(value_list);

                    GUILayout.EndHorizontal();

                    break;

                case Property.Type.MATRIX:
                    const int size = 9;

                    List <string> values_str = List.Parse(data.currentValue);

                    if (values_str.Count != size)
                    {
                        Debug.LogError(values_str.Count);
                        values_str = new List <string> {
                            "0", "0", "0", "0", "0", "0", "1", "1", "1"
                        };
                    }

                    GUILayout.BeginHorizontal();

                    GUILayout.BeginVertical();

                    GUILayout.Label("Position");
                    GUILayout.Label("Rotation");
                    GUILayout.Label("Scale");

                    GUILayout.EndVertical();

                    GUILayout.BeginVertical();

                    for (int j = 0; j < size; j++)
                    {
                        if (j % 3 == 0)
                        {
                            GUILayout.BeginHorizontal();
                        }

                        values_str[j] = GUILayout.TextField(values_str[j], GUILayout.Width(50));

                        if (j % 3 == 2)
                        {
                            GUILayout.EndHorizontal();
                        }
                    }

                    GUILayout.EndVertical();
                    GUILayout.EndHorizontal();

                    value = List.Serialize(values_str);

                    break;
                }

                if (data.currentValue.CompareTo(value) != 0)
                {
                    data.currentValue = value;

                    changed = true;
                }
            }

            return(changed);
        }