public override void Unserialize(GMDataReader reader, ListUnserialize before = null, ListUnserialize after = null, ListUnserializeElement elemReader = null) { // Read the element count and begin reading elements int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { before?.Invoke(reader, i, Count); // Read the current element and add it to the list T elem; if (elemReader == null) { elem = reader.ReadPointerObject <T>(reader.ReadInt32(), true); } else { elem = (T)elemReader(reader, true); } Add(elem); after?.Invoke(reader, i, Count); } }
public virtual void Unserialize(GMDataReader reader, ListUnserialize before = null, ListUnserialize after = null, ListUnserializeElement elemReader = null) { // Read the element count and begin reading elements int count = reader.ReadInt32(); Capacity = count; for (int i = 0; i < count; i++) { before?.Invoke(reader, i, count); // Read the current element and add it to the list T elem; if (elemReader == null) { elem = new T(); elem.Unserialize(reader); } else { elem = (T)elemReader(reader, (i + 1 != count)); } Add(elem); after?.Invoke(reader, i, count); } }
public override void Unserialize(GMDataReader reader, ListUnserialize before = null, ListUnserialize after = null, ListUnserializeElement elemReader = null) { // Define a default pointer reader if none is set if (elemReader == null) { if (UsePointerMap) { elemReader = DoReadPointerObject; } else { elemReader = DoReadPointerObjectUnique; } } // Read the element count and begin reading elements int count = reader.ReadInt32(); Capacity = count; for (int i = 0; i < count; i++) { before?.Invoke(reader, i, count); // Read the current element and add it to the list Add((T)elemReader(reader, i + 1 != count)); after?.Invoke(reader, i, count); } }