Example #1
0
 private void InitSubBindables(MemberBindProvider target, Type rt)
 {
     if (this.currSubBindType != rt)
     {
         this.currSubBindType = rt;
         this.subBindIdx      = -1;
         this.subBindables.Clear();
         this.subBindableLabels = new GUIContent[0];
         if (rt != null)
         {
             foreach (BindableData value in MemberBindProviderEd.getterBindables.Values)
             {
                 if (value.mi.IsStatic && rt.IsAssignableFrom(value.mi.ReturnType))
                 {
                     this.subBindables.Add(new BindableData
                     {
                         visibleName = value.mi.ReflectedType.FullName.Replace(".", "/") + "/" + value.mi.Name,
                         mi          = value.mi,
                         type        = null
                     });
                 }
             }
             string a = BloxMemberInfo.FullMemberPath(target.instanceMember).Replace(".", "/");
             this.subBindableLabels = new GUIContent[this.subBindables.Count];
             for (int i = 0; i < this.subBindables.Count; i++)
             {
                 this.subBindableLabels[i] = new GUIContent(this.subBindables[i].visibleName);
                 if (a == this.subBindables[i].visibleName)
                 {
                     this.subBindIdx = i;
                 }
             }
         }
     }
 }
Example #2
0
 public override void Deserialize()
 {
     this.member = BloxMemberInfo.DecodeMember(this.memberStoredData);
     if (this.sourceObjType == DataSourceOject.Instance)
     {
         this.instanceMember = BloxMemberInfo.DecodeMember(this.sourceObjData);
     }
 }
Example #3
0
 public override void Serialize()
 {
     base.Serialize();
     this.memberStoredData = BloxMemberInfo.EncodeMember(this.member);
     if (this.sourceObjType == DataSourceOject.Instance)
     {
         this.sourceObjData = BloxMemberInfo.EncodeMember(this.instanceMember);
     }
 }
Example #4
0
        public override string Label(DataProvider target)
        {
            MemberBindProvider memberBindProvider = (MemberBindProvider)target;

            if (memberBindProvider.member == null)
            {
                return(base.nfo.Name);
            }
            return(BloxMemberInfo.SimpleMemberPath(memberBindProvider.member));
        }
Example #5
0
        public override Type DataType()
        {
            BloxMemberInfo obj = this.member;

            if (obj == null)
            {
                return(null);
            }
            return(obj.ReturnType);
        }
Example #6
0
        private void Edit_ListOrArray_OnAdd(ReorderableList rol)
        {
            this.currRolList.Add(BloxMemberInfo.GetDefaultValue(this.currRolType));
            GUI.changed = true;
            EditorWindow obj = this.ed;

            if ((object)obj != null)
            {
                obj.Repaint();
            }
        }
Example #7
0
 public void Deserialize()
 {
     if (this.dataContext == DataContext.Constant)
     {
         this.constant.Deserialize();
     }
     else if (this.dataContext == DataContext.GlobalProperty)
     {
         this.member   = BloxMemberInfo.DecodeMember(this.storedData);
         this.property = (this.member.GetValue(null) as Property);
     }
 }
Example #8
0
 void ISerializationCallbackReceiver.OnBeforeSerialize()
 {
     if (this._isDirty)
     {
         this._isDirty   = false;
         this.storedData = null;
         if (this.dataContext == DataContext.Constant)
         {
             this.constant.Serialize();
             this.member   = null;
             this.property = null;
         }
         else if (this.dataContext == DataContext.GlobalProperty)
         {
             this.storedData = BloxMemberInfo.EncodeMember(this.member);
             this.constant   = null;
         }
     }
 }
Example #9
0
 private void Init_parVals()
 {
     if (this.b.mi != null)
     {
         if (this.b.mi.MemberType == MemberTypes.Field || this.b.mi.MemberType == MemberTypes.Property)
         {
             if (this.b.mi.CanSetValue)
             {
                 this.parVals    = new object[1];
                 this.parVals[0] = BloxMemberInfo.GetDefaultValue(this.b.mi.ReturnType);
             }
         }
         else
         {
             ParameterInfo[] parameters = this.b.mi.GetParameters();
             if (parameters != null)
             {
                 this.parVals = new object[parameters.Length];
                 for (int i = 0; i < parameters.Length; i++)
                 {
                     this.parVals[i] = BloxMemberInfo.GetDefaultValue(parameters[i].ParameterType);
                 }
             }
         }
     }
     else
     {
         BloxBlockAttribute[] array = (BloxBlockAttribute[])this.b.GetType().GetCustomAttributes(typeof(BloxBlockAttribute), false);
         if (((array.Length != 0) ? ((array[0].ParamTypes != null) ? array[0].ParamTypes.Length : 0) : 0) != 0)
         {
             this.parVals = new object[array[0].ParamTypes.Length];
             for (int j = 0; j < this.parVals.Length; j++)
             {
                 this.parVals[j] = BloxMemberInfo.GetDefaultValue(array[0].ParamTypes[j]);
             }
         }
     }
     if (this.parVals == null)
     {
         this.parVals = new object[0];
     }
 }
Example #10
0
 protected string GetDataBindingLabel(DataBinding binding)
 {
     if (binding.dataContext == DataBinding.DataContext.Constant)
     {
         plyVar constant = binding.constant;
         if (((constant != null) ? constant.GetValue() : null) != null)
         {
             return(binding.constant.GetValue().ToString());
         }
         return("null");
     }
     if (binding.dataContext == DataBinding.DataContext.GlobalProperty)
     {
         if (binding.member == null)
         {
             return("null");
         }
         return(BloxMemberInfo.SimpleMemberPath(binding.member));
     }
     return("-select-");
 }
Example #11
0
        private void InitCurrBindables(MemberBindProvider target, bool isForSetter)
        {
            if (this.currBindables != null && this.currBindableLabels != null)
            {
                return;
            }
            Dictionary <string, BindableData> dictionary = isForSetter ? MemberBindProviderEd.setterBindables : MemberBindProviderEd.getterBindables;

            this.currBindables = new BindableData[dictionary.Count];
            dictionary.Values.CopyTo(this.currBindables, 0);
            this.currBindableLabels = new GUIContent[this.currBindables.Length];
            for (int i = 0; i < this.currBindables.Length; i++)
            {
                this.currBindableLabels[i] = new GUIContent(this.currBindables[i].visibleName);
            }
            this.memberBindIdx = -1;
            BloxMemberInfo member     = target.member;
            string         memberName = MemberBindProviderEd.GetMemberName((member != null) ? member.MI : null);

            if (!string.IsNullOrEmpty(memberName))
            {
                int num = 0;
                while (num < this.currBindables.Length)
                {
                    if (!(memberName == this.currBindables[num].visibleName))
                    {
                        num++;
                        continue;
                    }
                    this.memberBindIdx = num;
                    break;
                }
            }
            if (target.sourceObjType == MemberBindProvider.DataSourceOject.Instance && target.member != null)
            {
                this.InitSubBindables(target, target.member.ReflectedType);
            }
        }
Example #12
0
 private void DrawProperties()
 {
     if (this.currBlock == null || this.selectedBlockDef != this.shownDef || this.currBlock.def == null)
     {
         this.DrawEventProperties();
     }
     else if (this.currBlock.def.drawer != null)
     {
         EditorGUI.BeginChangeCheck();
         this.currBlock.def.drawer.DrawProperties(BloxEditorWindow.Instance, this.currBlock);
         if (EditorGUI.EndChangeCheck())
         {
             GUI.changed = false;
             BloxEditorWindow.Instance.SaveBlox(true);
         }
         EditorGUILayout.Space();
     }
     else if (this.currBlock.b.blockType == BloxBlockType.Value && this.currBlock.b.returnType != null && this.currBlock.b.returnType != typeof(void) && this.currBlock.def.contextType == null && (this.currBlock.def.mi == null || this.currBlock.def.mi.CanSetValue))
     {
         if (this.currBlock.b.returnValue == null)
         {
             this.currBlock.b.returnValue = BloxMemberInfo.GetDefaultValue(this.currBlock.b.returnType);
             if (this.currBlock.b.returnValue != null)
             {
                 GUI.changed = true;
             }
         }
         EditorGUI.BeginChangeCheck();
         this.currBlock.b.returnValue = this.Edit_Field(this.currBlock.b.returnType, this.currBlock.b.returnValue, this.currBlock);
         if (EditorGUI.EndChangeCheck())
         {
             GUI.changed = false;
             BloxEditorWindow.Instance.SaveBlox(true);
         }
         EditorGUILayout.Space();
     }
 }
Example #13
0
        private static void ProcessBindableMember(MemberInfo mi, Type valType, bool inclOnlySpecifiedMembers)
        {
            Debug.Log("ProcessBindableMember", "MemberBindProviderEd", Color.red);
            bool flag = inclOnlySpecifiedMembers;

            object[] customAttributes = mi.GetCustomAttributes(true);
            for (int i = 0; i < customAttributes.Length; i++)
            {
                Type type = customAttributes[i].GetType();
                if (type == typeof(IncludeInBloxAttribute))
                {
                    flag = false;
                }
                if (type == typeof(ExcludeFromBloxAttribute))
                {
                    flag = true;
                    break;
                }
                if (type == typeof(BloxEventAttribute))
                {
                    flag = true;
                    break;
                }
                if (type == typeof(ObsoleteAttribute))
                {
                    flag = true;
                    break;
                }
                if (type == typeof(ExcludeFromDocsAttribute))
                {
                    flag = true;
                    break;
                }
            }
            if (!flag)
            {
                Type           _              = mi.ReflectedType;
                string         memberName     = MemberBindProviderEd.GetMemberName(mi);
                BloxMemberInfo bloxMemberInfo = new BloxMemberInfo(mi, null);
                if (bloxMemberInfo.CanGetValue && valType != null && valType != typeof(void) && !MemberBindProviderEd.getterBindables.ContainsKey(memberName))
                {
                    MemberBindProviderEd.getterBindables.Add(memberName, new BindableData
                    {
                        visibleName = memberName,
                        mi          = bloxMemberInfo,
                        type        = valType
                    });
                }
                if (!bloxMemberInfo.CanSetValue && bloxMemberInfo.MemberType != MemberTypes.Method)
                {
                    return;
                }
                if (!MemberBindProviderEd.setterBindables.ContainsKey(memberName))
                {
                    MemberBindProviderEd.setterBindables.Add(memberName, new BindableData
                    {
                        visibleName = memberName,
                        mi          = bloxMemberInfo,
                        type        = ((bloxMemberInfo.MemberType == MemberTypes.Method) ? typeof(object) : valType)
                    });
                }
            }
        }
Example #14
0
        private static IEnumerator Loader()
        {
            Debug.Log("Loader", "MemberBindProviderEd", Color.blue);
            int count            = 0;
            int countBeforeYield = 20;

            if (MemberBindProviderEd.getterBindables == null || MemberBindProviderEd.setterBindables == null)
            {
                MemberBindProviderEd.getterBindables = new Dictionary <string, BindableData>();
                MemberBindProviderEd.setterBindables = new Dictionary <string, BindableData>();
                if (MemberBindProviderEd.scanTypes == null)
                {
                    MemberBindProviderEd.scanTypes = new List <Type>();
                    List <Type> usedValueTypes = new List <Type>(20)
                    {
                        typeof(bool),
                        typeof(int),
                        typeof(float),
                        typeof(string),
                        typeof(Vector2),
                        typeof(Vector3),
                        typeof(Rect),
                        typeof(Color)
                    };
                    new List <Type>();
                    List <string> lines = plyEdUtil.ReadCompressedLines(plyEdUtil.ProjectFullPath + BloxEdGlobal.MiscPath + "blocks.bin");
                    if (lines.Count > 0)
                    {
                        yield return((object)null);

                        for (int i = 0; i < lines.Count; i++)
                        {
                            string text = lines[i];
                            if (!string.IsNullOrEmpty(text))
                            {
                                BloxMemberInfo bloxMemberInfo = BloxMemberInfo.DecodeMember(text);
                                if (bloxMemberInfo != null && !MemberBindProviderEd.scanTypes.Contains(bloxMemberInfo.ReflectedType))
                                {
                                    MemberBindProviderEd.scanTypes.Add(bloxMemberInfo.ReflectedType);
                                }
                                count++;
                                if (count >= countBeforeYield)
                                {
                                    count = 0;
                                    yield return((object)null);
                                }
                            }
                        }
                    }
                    foreach (Type item in usedValueTypes)
                    {
                        if (!MemberBindProviderEd.scanTypes.Contains(item))
                        {
                            MemberBindProviderEd.scanTypes.Add(item);
                        }
                    }
                    yield return((object)null);

                    MemberBindProviderEd.scanTypes.Sort((Type a, Type b) => a.FullName.CompareTo(b.FullName));
                }
                List <Type> .Enumerator enumerator2 = MemberBindProviderEd.scanTypes.GetEnumerator();
                try
                {
                    while (enumerator2.MoveNext())
                    {
                        Type current2 = enumerator2.Current;
                        if (current2.IsClass && !current2.IsEnum && (!current2.IsAbstract || current2.IsSealed) && !current2.IsSpecialName && !current2.IsSubclassOf(typeof(Attribute)) && current2 != typeof(Attribute) && !current2.IsSubclassOf(typeof(Delegate)) && current2 != typeof(Delegate) && !current2.IsSubclassOf(typeof(Exception)) && current2 != typeof(Exception) && !current2.IsSubclassOf(typeof(BloxEventHandler)) && current2 != typeof(BloxEventHandler))
                        {
                            bool     inclOnlySpecifiedMembers = false;
                            object[] customAttributes         = current2.GetCustomAttributes(typeof(ExcludeFromBloxAttribute), true);
                            if (customAttributes.Length != 0)
                            {
                                if (!((ExcludeFromBloxAttribute)customAttributes[0]).ExceptForSpecifiedMembers)
                                {
                                    continue;
                                }
                                inclOnlySpecifiedMembers = true;
                            }
                            bool         flag         = true;
                            BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public;
                            if (BloxEd.Instance.includeDeclaredOnly | flag)
                            {
                                bindingFlags = (BindingFlags)((int)bindingFlags | 2);
                            }
                            PropertyInfo[] properties = current2.GetProperties(bindingFlags);
                            for (int j = 0; j < properties.Length; j++)
                            {
                                PropertyInfo propertyInfo = properties[j];
                                MemberBindProviderEd.ProcessBindableMember(propertyInfo, propertyInfo.PropertyType, inclOnlySpecifiedMembers);
                            }
                            FieldInfo[] fields = current2.GetFields(bindingFlags);
                            for (int j = 0; j < fields.Length; j++)
                            {
                                FieldInfo fieldInfo = fields[j];
                                MemberBindProviderEd.ProcessBindableMember(fieldInfo, fieldInfo.FieldType, inclOnlySpecifiedMembers);
                            }
                            MethodInfo[] methods = current2.GetMethods(bindingFlags);
                            for (int j = 0; j < methods.Length; j++)
                            {
                                MethodInfo methodInfo = methods[j];
                                if (!methodInfo.IsSpecialName)
                                {
                                    MemberBindProviderEd.ProcessBindableMember(methodInfo, methodInfo.ReturnType, inclOnlySpecifiedMembers);
                                }
                            }
                            count++;
                            if (count >= countBeforeYield)
                            {
                                count = 0;
                                yield return((object)null);
                            }
                        }
                    }
                }
                finally
                {
                    ((IDisposable)enumerator2).Dispose();
                }
                enumerator2 = default(List <Type> .Enumerator);
            }
            yield return((object)null);

            MemberBindProviderEd.loader.Stop();
            MemberBindProviderEd.loader = null;
        }
Example #15
0
 private object MemberContext()
 {
     if (this.member != null && !this.member.IsStatic)
     {
         if (this.memberContext != null)
         {
             return(this.memberContext);
         }
         Type reflectedType = this.member.ReflectedType;
         if (this.sourceObjType == DataSourceOject.WithName)
         {
             GameObject gameObject = GameObject.Find(this.sourceObjData);
             this.memberContext = (((object)gameObject != null) ? gameObject.GetComponent(reflectedType) : null);
             if (this.memberContext == null)
             {
                 Debug.LogErrorFormat("[MemberBind] The context for member [{0}] could not be resolved. This will lead to further errors. Object with Name [{1}] and Component [{2}] was expected in scene.", BloxMemberInfo.SimpleMemberPath(this.member), this.sourceObjData, reflectedType.Name);
             }
         }
         else if (this.sourceObjType == DataSourceOject.WithTag)
         {
             GameObject gameObject2 = GameObject.FindGameObjectWithTag(this.sourceObjData);
             this.memberContext = (((object)gameObject2 != null) ? gameObject2.GetComponent(reflectedType) : null);
             if (this.memberContext == null)
             {
                 Debug.LogErrorFormat("[MemberBind] The context for member [{0}] could not be resolved. This will lead to further errors. Object with Tag [{1}] and Component [{2}] was expected in scene.", BloxMemberInfo.SimpleMemberPath(this.member), this.sourceObjData, reflectedType.Name);
             }
         }
         else if (this.sourceObjType == DataSourceOject.OfType)
         {
             this.memberContext = UnityEngine.Object.FindObjectOfType(reflectedType);
             if (this.memberContext == null)
             {
                 Debug.LogErrorFormat("[MemberBind] The context for member [{0}] could not be resolved. This will lead to further errors. Object with Component [{1}] was expected in scene.", BloxMemberInfo.SimpleMemberPath(this.member), reflectedType.Name);
             }
         }
         else if (this.sourceObjType == DataSourceOject.Instance)
         {
             if (this.instanceMember != null)
             {
                 this.memberContext = this.instanceMember.GetValue(null);
             }
             if (this.memberContext == null)
             {
                 Debug.LogErrorFormat("[MemberBind] The context for member [{0}] could not be resolved via singleton instance data. This will lead to further errors.", BloxMemberInfo.SimpleMemberPath(this.member));
             }
         }
         else if (this.sourceObjType == DataSourceOject.Owner)
         {
             Component owner = base.owner;
             this.memberContext = (((object)owner != null) ? owner.GetComponent(reflectedType) : null);
             if (this.memberContext == null)
             {
                 Debug.LogErrorFormat("[MemberBind] The context for member [{0}] could not be resolved via 'owner'. This will lead to further errors.", BloxMemberInfo.SimpleMemberPath(this.member));
             }
         }
         else
         {
             Debug.LogErrorFormat("[MemberBind] The context for member [{0}] could not be resolved. This will lead to further errors. No source object was specified.", BloxMemberInfo.SimpleMemberPath(this.member));
         }
         return(this.memberContext);
     }
     return(null);
 }
Example #16
0
        private void InitGlobalProperty()
        {
            if (DataBindingWindow.staticBindables == null || DataBindingWindow.staticBindableLabels == null)
            {
                DataBindingWindow.staticBindables = new List <BindableData>();
                Type       typeFromHandle = typeof(Property);
                Assembly[] assemblies     = AppDomain.CurrentDomain.GetAssemblies();
                for (int i = 0; i < assemblies.Length; i++)
                {
                    Type[] exportedTypes = assemblies[i].GetExportedTypes();
                    for (int j = 0; j < exportedTypes.Length; j++)
                    {
                        Type           type       = exportedTypes[j];
                        PropertyInfo[] properties = type.GetProperties(BindingFlags.Static | BindingFlags.Public);
                        for (int k = 0; k < properties.Length; k++)
                        {
                            PropertyInfo propertyInfo = properties[k];
                            if (typeFromHandle.IsAssignableFrom(propertyInfo.PropertyType))
                            {
                                DataBindingWindow.staticBindables.Add(new BindableData
                                {
                                    visibleName = type.Name + "/" + propertyInfo.Name,
                                    mi          = new BloxMemberInfo(propertyInfo, null)
                                });
                            }
                        }
                        FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.Public);
                        for (int k = 0; k < fields.Length; k++)
                        {
                            FieldInfo fieldInfo = fields[k];
                            if (typeFromHandle.IsAssignableFrom(fieldInfo.FieldType))
                            {
                                DataBindingWindow.staticBindables.Add(new BindableData
                                {
                                    visibleName = type.Name + "/" + fieldInfo.Name,
                                    mi          = new BloxMemberInfo(fieldInfo, null)
                                });
                            }
                        }
                    }
                }
                DataBindingWindow.staticBindableLabels = new GUIContent[DataBindingWindow.staticBindables.Count];
                for (int l = 0; l < DataBindingWindow.staticBindables.Count; l++)
                {
                    DataBindingWindow.staticBindableLabels[l] = new GUIContent(DataBindingWindow.staticBindables[l].visibleName);
                }
            }
            string a   = BloxMemberInfo.SimpleMemberPath(this.databinding.member).Replace(".", "/");
            int    num = 0;

            while (true)
            {
                if (num < DataBindingWindow.staticBindables.Count)
                {
                    if (!(a == DataBindingWindow.staticBindables[num].visibleName))
                    {
                        num++;
                        continue;
                    }
                    break;
                }
                return;
            }
            this.staticBindIdx = num;
        }
Example #17
0
        protected override void Draw(Rect rect, DataProvider target, bool isSetter)
        {
            MemberBindProvider memberBindProvider = (MemberBindProvider)target;

            rect.height = EditorGUIUtility.singleLineHeight;
            if (MemberBindProviderEd.loader != null)
            {
                plyEdGUI.DrawSpinner(rect, MemberBindProviderEd.GC_Loading);
                if (Event.current.type == EventType.Repaint)
                {
                    MemberBindProviderEd.loader.DoUpdate();
                }
            }
            else
            {
                this.InitCurrBindables(memberBindProvider, isSetter);
                EditorGUIUtility.labelWidth = 65f;
                Rect       rect2 = rect;
                GUIContent label = isSetter ? MemberBindProviderEd.GC_SetMember : MemberBindProviderEd.GC_GetMember;
                if (memberBindProvider.member != null && memberBindProvider.member.MemberType == MemberTypes.Method)
                {
                    label = MemberBindProviderEd.GC_InvokeMember;
                }
                EditorGUI.BeginChangeCheck();
                this.memberBindIdx = EditorGUI.Popup(rect2, label, this.memberBindIdx, this.currBindableLabels);
                if (EditorGUI.EndChangeCheck())
                {
                    memberBindProvider.member         = this.currBindables[this.memberBindIdx].mi;
                    memberBindProvider.instanceMember = null;
                    if (memberBindProvider.valSetterSources.Length != 0)
                    {
                        memberBindProvider.valSetterSources = new DataBindingValueSource[0];
                    }
                    if (memberBindProvider.sourceObjType == MemberBindProvider.DataSourceOject.Instance)
                    {
                        MemberBindProvider target2 = memberBindProvider;
                        BloxMemberInfo     member  = memberBindProvider.member;
                        this.InitSubBindables(target2, (member != null) ? member.ReflectedType : null);
                    }
                }
                if (memberBindProvider.member == null)
                {
                    if (memberBindProvider.instanceMember != null)
                    {
                        memberBindProvider.instanceMember = null;
                        GUI.changed = true;
                    }
                    if (memberBindProvider.valSetterSources.Length != 0)
                    {
                        memberBindProvider.valSetterSources = new DataBindingValueSource[0];
                        GUI.changed = true;
                    }
                }
                else
                {
                    if (!memberBindProvider.member.IsStatic)
                    {
                        rect2.y += (float)(EditorGUIUtility.singleLineHeight + 2.0);
                        if (memberBindProvider.sourceObjType != 0 && memberBindProvider.sourceObjType != MemberBindProvider.DataSourceOject.Owner)
                        {
                            rect2.width = (float)(EditorGUIUtility.labelWidth + 100.0);
                        }
                        EditorGUI.BeginChangeCheck();
                        memberBindProvider.sourceObjType = (MemberBindProvider.DataSourceOject)EditorGUI.EnumPopup(rect2, MemberBindProviderEd.GC_TargetObject, (Enum)(object)memberBindProvider.sourceObjType);
                        if (EditorGUI.EndChangeCheck())
                        {
                            memberBindProvider.sourceObjData = "";
                            if (memberBindProvider.sourceObjType == MemberBindProvider.DataSourceOject.Instance)
                            {
                                MemberBindProvider target3 = memberBindProvider;
                                BloxMemberInfo     member2 = memberBindProvider.member;
                                this.InitSubBindables(target3, (member2 != null) ? member2.ReflectedType : null);
                            }
                        }
                        rect2.x    += (float)(EditorGUIUtility.labelWidth + 102.0);
                        rect2.width = (float)(rect.width - (EditorGUIUtility.labelWidth + 102.0));
                        if (memberBindProvider.sourceObjType == MemberBindProvider.DataSourceOject.WithName || memberBindProvider.sourceObjType == MemberBindProvider.DataSourceOject.WithTag)
                        {
                            memberBindProvider.sourceObjData = EditorGUI.TextField(rect2, memberBindProvider.sourceObjData);
                        }
                        else if (memberBindProvider.sourceObjType == MemberBindProvider.DataSourceOject.OfType)
                        {
                            EditorGUI.LabelField(rect2, BloxEd.PrettyTypeName(memberBindProvider.member.ReflectedType, true));
                        }
                        else if (memberBindProvider.sourceObjType == MemberBindProvider.DataSourceOject.Instance)
                        {
                            EditorGUI.BeginChangeCheck();
                            this.subBindIdx = EditorGUI.Popup(rect2, this.subBindIdx, this.subBindableLabels);
                            if (EditorGUI.EndChangeCheck())
                            {
                                memberBindProvider.instanceMember = this.subBindables[this.subBindIdx].mi;
                            }
                        }
                    }
                    rect2.x     = rect.x;
                    rect2.y    += (float)(EditorGUIUtility.singleLineHeight + 2.0);
                    rect2.width = rect.width;
                    if (memberBindProvider.member.MemberType == MemberTypes.Method)
                    {
                        ParameterInfo[] parameters = memberBindProvider.member.GetParameters();
                        if (memberBindProvider.valSetterSources.Length != parameters.Length)
                        {
                            GUI.changed = true;
                            memberBindProvider.valSetterSources = new DataBindingValueSource[parameters.Length];
                            for (int i = 0; i < parameters.Length; i++)
                            {
                                memberBindProvider.valSetterSources[i] = new DataBindingValueSource();
                            }
                        }
                        if (memberBindProvider.valSetterSources.Length != 0)
                        {
                            GUI.Label(rect2, MemberBindProviderEd.GC_With);
                            for (int j = 0; j < memberBindProvider.valSetterSources.Length; j++)
                            {
                                MemberBindProviderEd.GC_Param.text = parameters[j].Name + "=";
                                rect2.y += (float)(EditorGUIUtility.singleLineHeight + 2.0);
                                memberBindProvider.valSetterSources[j] = DataProviderEd.DataBindingValueSourceField(rect2, MemberBindProviderEd.GC_Param, memberBindProvider.valSetterSources[j], MemberBindProviderEd.GC_ToValBindWin, memberBindProvider);
                            }
                        }
                    }
                    else if (isSetter)
                    {
                        if (memberBindProvider.valSetterSources.Length != 1)
                        {
                            GUI.changed = true;
                            memberBindProvider.valSetterSources = new DataBindingValueSource[1]
                            {
                                new DataBindingValueSource()
                            };
                        }
                        memberBindProvider.valSetterSources[0] = DataProviderEd.DataBindingValueSourceField(rect2, MemberBindProviderEd.GC_ToVal, memberBindProvider.valSetterSources[0], MemberBindProviderEd.GC_ToValBindWin, memberBindProvider);
                    }
                }
            }
        }