private static bool InspectField(Inspector inspector, string path, ref object data, FieldInfo fieldInfo, string prefix) { object value = fieldInfo.GetValue(data); FieldInfo info = fieldInfo; bool inwritable = info.IsInitOnly || info.IsLiteral; Type valueType = value != null?value.GetType() : info.FieldType; bool changed = false; object changedvalue = null; var mark = TypeTools.GetAttribute <IMark>(info); if (inwritable) { inspector.Inspect(prefix + fieldInfo.Name, path + "." + fieldInfo.Name, value, valueType, mark); } else { inspector.Inspect(prefix + fieldInfo.Name, path + "." + fieldInfo.Name, value, valueType, mark, v => { changed = true; changedvalue = v; }); } if (changed) { info.SetValue(data, changedvalue); } return(changed); }
public override bool InspectSelf(Inspector inspector, string name, ref object data, Type type) { var e = data as Enum; if (e == null) { return(false); } if (TypeTools.GetAttribute <FlagsAttribute>(type) != null) { return(ApplyValueIfNotEqual(ref data, GUITools.EnumMaskField(name, e))); } else { return(ApplyValueIfNotEqual(ref data, GUITools.EnumPopup(name, e))); } }