public FieldGUIBase(object data, FieldInfo fieldInfo, FieldGUIInfo guiInfo) { this.data = data; this.fieldInfo = fieldInfo; this.guiInfo = guiInfo; this.Sync = guiInfo.Sync; InitializeGUI(); Load(); }
private FieldGUIInfo GenerateAttribute(FieldInfo info) { FieldGUIInfo attribute = Attribute.GetCustomAttribute(info, typeof(FieldGUIInfo)) as FieldGUIInfo; if (attribute == null) { attribute = new FieldGUIInfo(); attribute.Title = FieldGUI.ToTitleCase(info.Name); return(attribute); } if (attribute.Title == null) { attribute.Title = FieldGUI.ToTitleCase(info.Name); } return(attribute); }
private static FieldGUIInfo GetFieldGUIInfo(FieldInfo fieldInfo) { FieldGUIInfo guiInfo = Attribute.GetCustomAttribute (fieldInfo, typeof(FieldGUIInfo)) as FieldGUIInfo; if (guiInfo == null) { guiInfo = new FieldGUIInfo(); guiInfo.Title = FieldGUI.GetTitleCase(fieldInfo.Name); return(guiInfo); } if (guiInfo.Title == null) { guiInfo.Title = FieldGUI.GetTitleCase(fieldInfo.Name); } return(guiInfo); }
private void GenerateGUIs(object data) { // NOTE: // Must be reset first. if (this.fieldGUIGroups.Count > 1) { this.fieldGUIGroups.RemoveRange(1, this.fieldGUIGroups.Count); } this.fieldGUIGroups[0].GUIs.Clear(); FieldInfo[] fieldInfos = data.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance); if (fieldInfos.Length == 0) { return; } for (var i = 0; i < fieldInfos.Length; i++) { FieldInfo fieldInfo = fieldInfos[i]; FieldGUIInfo guiInfo = GetFieldGUIInfo(fieldInfo); string headerInfo = GetFieldHeaderInfo(fieldInfo); if (guiInfo.Hide) { continue; } if (headerInfo != null) { FieldGUIGroup fieldGUIGroup = new FieldGUIGroup(); fieldGUIGroup.Panel.Title = headerInfo; this.fieldGUIGroups.Add(fieldGUIGroup); } this.fieldGUIGroups[this.fieldGUIGroups.Count - 1].GUIs .Add(GenerateGUI(data, fieldInfo, guiInfo)); } }
public FieldGUIBase(object data, FieldInfo fieldInfo, FieldGUIInfo guiInfo) { this.Data = data; this.FieldInfo = fieldInfo; this.GUIInfo = guiInfo; }
private static FieldGUIBase GenerateGUI(object data, FieldInfo fieldInfo, FieldGUIInfo guiInfo) { FieldGUI.GetFieldGUIType(data, fieldInfo, out Type type, out bool typeIsIList); if (data == null || typeIsIList) { return(new FieldGUIs.UnSupportedGUI(data, fieldInfo, guiInfo)); } if (type == typeof(bool)) { return(new FieldGUIs.BoolGUI(data, fieldInfo, guiInfo)); } if (type == typeof(int)) { return(new FieldGUIs.IntGUI(data, fieldInfo, guiInfo)); } if (type == typeof(float)) { return(new FieldGUIs.FloatGUI(data, fieldInfo, guiInfo)); } if (type == typeof(Vector2)) { return(new FieldGUIs.Vector2GUI(data, fieldInfo, guiInfo)); } if (type == typeof(Vector3)) { return(new FieldGUIs.Vector3GUI(data, fieldInfo, guiInfo)); } if (type == typeof(Vector4)) { return(new FieldGUIs.Vector4GUI(data, fieldInfo, guiInfo)); } if (type == typeof(Vector2Int)) { return(new FieldGUIs.Vector2IntGUI(data, fieldInfo, guiInfo)); } if (type == typeof(Vector3Int)) { return(new FieldGUIs.Vector3IntGUI(data, fieldInfo, guiInfo)); } if (type == typeof(Color)) { return(new FieldGUIs.ColorGUI(data, fieldInfo, guiInfo)); } if (type == typeof(Matrix4x4)) { return(new FieldGUIs.Matrix4x4GUI(data, fieldInfo, guiInfo)); } if (type == typeof(bool)) { return(new FieldGUIs.BoolGUI(data, fieldInfo, guiInfo)); } if (type == typeof(string)) { if (guiInfo.IPv4) { return(new FieldGUIs.IPv4GUI(data, fieldInfo, guiInfo)); } else { return(new FieldGUIs.StringGUI(data, fieldInfo, guiInfo)); } } if (type.IsEnum) { return((FieldGUIBase)Activator.CreateInstance (typeof(FieldGUIs.EnumGUI <>).MakeGenericType(fieldInfo.FieldType), data, fieldInfo, guiInfo)); } //if (type.IsValueType) // Means any other struct. //{ // return new FieldGUIs.UnSupportedGUI(data, fieldInfo, guiInfo); //} return(new FieldGUIs.FieldGUI(data, fieldInfo, guiInfo)); }
public FieldGUIComponents(object data, FieldInfo fieldInfo, FieldGUIInfo guiInfo) : base(data, fieldInfo, guiInfo) { }
protected static FieldGUIType GetFieldGUIType(object data, FieldInfo fieldInfo, FieldGUIInfo guiInfo) { Type type = fieldInfo.FieldType; if (type.IsPrimitive) { if (type == typeof(bool)) { return(FieldGUIType.Bool); } if (type == typeof(int)) { return(FieldGUIType.Int); } if (type == typeof(float)) { return(FieldGUIType.Float); } } if (type.IsValueType) { if (type == typeof(Vector2)) { return(FieldGUIType.Vector2); } if (type == typeof(Vector3)) { return(FieldGUIType.Vector3); } if (type == typeof(Vector4)) { return(FieldGUIType.Vector4); } if (type == typeof(Color)) { return(FieldGUIType.Color); } } if (type == typeof(string)) { return(FieldGUIType.String); } if (type.IsEnum) { return(FieldGUIType.Enum); } if (fieldInfo.GetValue(data) is IList) { if (type.IsArray) { type = type.GetElementType(); } else { Type[] types = type.GetGenericArguments(); if (types.Length == 1) { type = types[0]; } } if (type.IsPrimitive) { if (type == typeof(int)) { return(FieldGUIType.Ints); } if (type == typeof(float)) { return(FieldGUIType.Floats); } if (type == typeof(bool)) { return(FieldGUIType.Bools); } } if (type.IsValueType) { if (type == typeof(Vector2)) { return(FieldGUIType.Vector2s); } if (type == typeof(Vector3)) { return(FieldGUIType.Vector3s); } if (type == typeof(Vector4)) { return(FieldGUIType.Vector4s); } if (type == typeof(Color)) { return(FieldGUIType.Colors); } } if (type == typeof(string)) { return(FieldGUIType.Strings); } if (type.IsEnum) { return(FieldGUIType.Enums); } } return(FieldGUIType.Unsupported); }
private FieldGUIBase GenerateGUI(object data, FieldInfo fieldInfo, FieldGUIInfo guiInfo) { Type guiType; Type genericType; FieldGUIType fieldGUIType = GetFieldGUIType(data, fieldInfo, guiInfo); switch (fieldGUIType) { case FieldGUIType.Bool: return(new FieldGUIs.BoolGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Bools: return(new FieldGUIs.BoolsGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Int: return(new FieldGUIs.IntGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Ints: return(new FieldGUIs.IntsGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Float: return(new FieldGUIs.FloatGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Floats: return(new FieldGUIs.FloatsGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Vector2: return(new FieldGUIs.Vector2GUI(data, fieldInfo, guiInfo)); case FieldGUIType.Vector2s: return(new FieldGUIs.Vector2sGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Vector3: return(new FieldGUIs.Vector3GUI(data, fieldInfo, guiInfo)); case FieldGUIType.Vector3s: return(new FieldGUIs.Vector3sGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Vector4: return(new FieldGUIs.Vector4GUI(data, fieldInfo, guiInfo)); case FieldGUIType.Vector4s: return(new FieldGUIs.Vector4sGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Color: return(new FieldGUIs.ColorGUI(data, fieldInfo, guiInfo)); case FieldGUIType.Colors: return(new FieldGUIs.ColorsGUI(data, fieldInfo, guiInfo)); case FieldGUIType.String: if (guiInfo.IPv4) { return(new FieldGUIs.IPv4GUI(data, fieldInfo, guiInfo)); } else { return(new FieldGUIs.StringGUI(data, fieldInfo, guiInfo)); } case FieldGUIType.Strings: if (guiInfo.IPv4) { return(new FieldGUIs.IPv4sGUI(data, fieldInfo, guiInfo)); } else { return(new FieldGUIs.StringsGUI(data, fieldInfo, guiInfo)); } case FieldGUIType.Enum: guiType = typeof(FieldGUIs.EnumGUI <>); genericType = guiType.MakeGenericType(fieldInfo.FieldType); return((FieldGUIBase)Activator.CreateInstance(genericType, data, fieldInfo, guiInfo)); case FieldGUIType.Enums: guiType = typeof(FieldGUIs.EnumsGUI <>); genericType = guiType.MakeGenericType(fieldInfo.FieldType.GetGenericArguments()[0]); return((FieldGUIBase)Activator.CreateInstance(genericType, data, fieldInfo, guiInfo)); default: return(new FieldGUIs.UnSupportedGUI(data, fieldInfo, guiInfo)); } }
public FieldGUIElement(object data, FieldInfo fieldInfo, FieldGUIInfo guiInfo) : base(data, fieldInfo, guiInfo) { }