/// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #5
0
 protected void CallMethod <T>(Expression <System.Action <T> > expression)
 {
     CallMethod(StaticReflectionHelper.GetMethod(expression));
 }
Beispiel #6
0
 protected void CallMethod(Expression <System.Func <object> > expression)
 {
     CallMethod(StaticReflectionHelper.GetMethod(expression));
 }