/// <summary> /// Same as SerializedProperty.FindPropertyRelative but without the use of magic strings. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="property"></param> /// <param name="expression"></param> /// <returns></returns> public static SerializedProperty GetMemberProperty <T>(this SerializedProperty property, Expression <System.Func <T, object> > expression) { string memberName = StaticReflectionHelper.GetMemberName(expression).UnwrapOr(""); SerializedProperty memberProperty = property.FindPropertyRelative(memberName); if (memberProperty == null) { memberProperty = property.Copy(); if (!memberProperty.Next(true)) { return(null); } string niceMemberName = ObjectNames.NicifyVariableName(memberName); do { string currentMemberNiceName = ObjectNames.NicifyVariableName(memberProperty.name); if (string.Equals(niceMemberName, currentMemberNiceName)) { return(memberProperty); } } while(!memberProperty.Next(false)); } return(memberProperty); }
/// <summary> /// Same as SerializedProperty.FindPropertyRelative but without the use of magic strings. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="property"></param> /// <param name="expression"></param> /// <returns></returns> public static SerializedProperty GetMemberProperty <T>(this SerializedProperty property, Expression <System.Func <T, object> > expression) { string memberName = StaticReflectionHelper.GetMemberName(expression).Or(""); SerializedProperty memberProperty = property.FindPropertyRelative(memberName); if (memberProperty == null) { memberProperty = property.Copy(); if (!memberProperty.Next(true)) { return(null); } string memberNameWithMPrefix = "m_" + memberName; do { if (string.Compare(memberProperty.name, memberName, true) == 0) { return(memberProperty); } if (string.Compare(memberProperty.name, memberNameWithMPrefix, true) == 0) { return(memberProperty); } } while(!memberProperty.Next(false)); } return(memberProperty); }
/// <summary> /// Helper method to draw a node slot. /// </summary> /// <param name="host"></param> /// <param name="expression"></param> protected void DrawSlot(GraphGUI host, Expression <System.Func <object> > expression) { string slotName; if (StaticReflectionHelper.GetMemberName(expression).TryGet(out slotName)) { DrawSlot(host, slotName); } }
/// <summary> /// Same as SerializedProperty.FindProperty but without the use of magic strings. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="property"></param> /// <param name="expression"></param> /// <returns></returns> public static SerializedProperty GetMemberProperty <T>(this SerializedObject obj, Expression <System.Func <T, object> > expression) { string memberName = StaticReflectionHelper.GetMemberName(expression).UnwrapOr(""); SerializedProperty memberProperty = obj.FindProperty(memberName); if (memberProperty == null) { memberProperty = obj.FindProperty("m_" + memberName); return(memberProperty); } return(memberProperty); }
protected void CallMethod <T>(Expression <System.Action <T> > expression) { CallMethod(StaticReflectionHelper.GetMethod(expression)); }
protected void CallMethod(Expression <System.Func <object> > expression) { CallMethod(StaticReflectionHelper.GetMethod(expression)); }