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; }
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); } }
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; }
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); } }
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); } }