public static ConfigNodeObjectGUI FromObject(ConfigNodeObject o) { var gui = new ConfigNodeObjectGUI(); gui.SetObject(o); return(gui); }
void SetObject(ConfigNodeObject o) { obj = o; name = Utils.ParseCamelCase(obj.GetType().Name); foreach (var fi in o.GetType() .GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy) .Where(f => f.GetCustomAttributes(typeof(Persistent), true).Length > 0)) { if (typeof(ConfigNodeObject).IsAssignableFrom(fi.FieldType)) { var child = fi.GetValue(obj) as ConfigNodeObject; if (child != null) { var gui = ConfigNodeObjectGUI.FromObject(child); gui.parent = this; gui.name = fi.Name; children.Add(gui); } } else { if (fi.FieldType == typeof(bool)) { fields.Add(new BoolUI(fi, obj)); } else if (fi.FieldType == typeof(string)) { fields.Add(new StringUI(fi, obj)); } else if (fi.FieldType == typeof(int)) { fields.Add(new IntUI(fi, obj)); } else if (fi.FieldType == typeof(float)) { fields.Add(new FloatUI(fi, obj)); } else if (fi.FieldType == typeof(Vector3)) { fields.Add(new Vector3UI(fi, obj)); } } } }