/// <inheritdoc/> protected internal override void CloneElement(int index) { SerializableArray array = property.GetArray(); int size = array.GetLength() + 1; Array newArray = property.CreateArrayInstance(new int[] { size }); object clonedEntry = null; for (int i = 0; i < array.GetLength(); i++) { object value = array.GetProperty(i).GetValue <object>(); newArray.SetValue(value, i); if (i == index) { clonedEntry = SerializableUtility.Clone(array.GetProperty(i).GetValue <object>()); } } newArray.SetValue(clonedEntry, size - 1); property.SetValue(newArray); this.array = newArray; numElements = newArray.Length; }
/// <summary> /// Registers a set of rows for all entries of the provided array. /// </summary> /// <param name="parent">Parent foldout row to which to append the new elements.</param> /// <param name="serializableArray">Array whose fields to display.</param> private void AddArrayRows(Element parent, SerializableArray serializableArray) { List <Element> elements = new List <Element>(); int length = serializableArray.GetLength(); for (int i = 0; i < length; i++) { string name = "[" + i + "]"; string propertyPath = parent.path + name; Element element; if (AddPropertyRow(parent, name, propertyPath, serializableArray.GetProperty(i), out element)) { elements.Add(element); } } parent.children = elements.ToArray(); }
/// <inheritdoc/> protected internal override object GetValue(int seqIndex) { SerializableArray serzArray = property.GetArray(); // Create a property wrapper for native arrays so we get notified when the array values change if (style.StyleFlags.HasFlag(InspectableFieldStyleFlags.NativeWrapper)) { SerializableProperty.Getter getter = () => { Array array = property.GetValue <Array>(); if (array != null) { return(array.GetValue(seqIndex)); } else { return(null); } }; SerializableProperty.Setter setter = (object value) => { Array array = property.GetValue <Array>(); if (array != null) { array.SetValue(value, seqIndex); property.SetValue(array); } }; return(new SerializableProperty(serzArray.ElementPropertyType, serzArray.ElementType, getter, setter)); } else { return(serzArray.GetProperty(seqIndex)); } }
/// <inheritdoc/> protected internal override object GetValue(int seqIndex) { SerializableArray array = property.GetArray(); return(array.GetProperty(seqIndex)); }