コード例 #1
0
        protected virtual void InitOverride(object[] targets, object[] accessors, MemberInfo memberInfo, Action <object, object> eraseTargetCallback = null, string label = null)
        {
            m_targets   = targets;
            m_accessors = accessors;

            if (Target == null)
            {
                if (Label != null)
                {
                    if (label != null)
                    {
                        Label.text = label;
                    }
                }
                return;
            }

            IListElementAccessor arrayElement = Target as IListElementAccessor;

            if (arrayElement == null)
            {
                if (memberInfo is PropertyInfo)
                {
                    Type propType = ((PropertyInfo)memberInfo).PropertyType;
                    MemberInfoType = propType;
                }
                else if (memberInfo is FieldInfo)
                {
                    Type fieldType = ((FieldInfo)memberInfo).FieldType;
                    MemberInfoType = fieldType;
                }

                if (Label != null)
                {
                    if (label != null)
                    {
                        Label.text = label;
                    }
                    else
                    {
                        Label.text = memberInfo.Name;
                    }
                }
            }
            else
            {
                if (Label != null)
                {
                    Label.text = arrayElement.Name;
                }

                MemberInfoType = arrayElement.Type;
            }

            MemberInfo            = memberInfo;
            m_eraseTargetCallback = eraseTargetCallback;
        }
コード例 #2
0
 private void CreateElementEditors(IList value)
 {
     for (int i = 0; i < value.Count; ++i)
     {
         PropertyEditor editor = Instantiate(m_editorPrefab);
         editor.transform.SetParent(Panel, false);
         IListElementAccessor accessor = new IListElementAccessor(this, i, "Element " + i);
         editor.Init(accessor, accessor.GetType().GetProperty("Value"), accessor.Name, OnValueChanging, OnValueChanged, null, false);
     }
 }
コード例 #3
0
        protected virtual void InitOverride(object target, object accessor, MemberInfo memberInfo, Action <object, object> eraseTargetCallback = null, string label = null)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            IListElementAccessor arrayElement = target as IListElementAccessor;

            if (arrayElement == null)
            {
                if (!(memberInfo is PropertyInfo) && !(memberInfo is FieldInfo))
                {
                    throw new ArgumentException("memberInfo should be PropertyInfo or FieldInfo");
                }

                if (memberInfo is PropertyInfo)
                {
                    Type propType = ((PropertyInfo)memberInfo).PropertyType;
                    MemberInfoType = propType;
                }
                else
                {
                    Type fieldType = ((FieldInfo)memberInfo).FieldType;
                    MemberInfoType = fieldType;
                }
                if (Label != null)
                {
                    if (label != null)
                    {
                        Label.text = label;
                    }
                    else
                    {
                        Label.text = memberInfo.Name;
                    }
                }
            }
            else
            {
                if (Label != null)
                {
                    Label.text = arrayElement.Name;
                }

                MemberInfoType = arrayElement.Type;
            }

            Target                = target;
            Accessor              = accessor;
            MemberInfo            = memberInfo;
            m_eraseTargetCallback = eraseTargetCallback;
        }
コード例 #4
0
        private void CreateElementEditors(IList value)
        {
            if (value == null)
            {
                return;
            }

            int minCount     = value.Count;
            int targetsCount = Targets.Length;

            if (targetsCount > 0)
            {
                for (int i = 0; i < targetsCount; ++i)
                {
                    IList list = GetValue(i);
                    if (list == null)
                    {
                        return;
                    }

                    if (list.Count < minCount)
                    {
                        minCount = list.Count;
                    }
                }
            }

            for (int i = 0; i < minCount; ++i)
            {
                PropertyEditor editor = Instantiate(m_editorPrefab);
                editor.transform.SetParent(Panel, false);

                IListElementAccessor[] accessors = new IListElementAccessor[targetsCount];
                for (int l = 0; l < targetsCount; ++l)
                {
                    accessors[l] = CreateAccessor(l, i);
                }

                editor.Init(accessors, accessors, accessors[0].GetType().GetProperty("Value"), null, accessors[0].Name, OnValueChanging, OnValueChanged, () =>
                {
                },
                            true);
            }
        }
コード例 #5
0
        private void CreateElementEditors(IList value)
        {
            if (value == null)
            {
                return;
            }

            for (int i = 0; i < value.Count; ++i)
            {
                PropertyEditor editor = Instantiate(m_editorPrefab);
                editor.transform.SetParent(Panel, false);

                IListElementAccessor accessor = CreateAccessor(i);
                editor.Init(accessor, accessor, accessor.GetType().GetProperty("Value"), null, accessor.Name, OnValueChanging, OnValueChanged, () =>
                {
                },
                            false);
            }
        }