using System; using System.Collections; using System.Runtime.Serialization; namespace UnityEngine.Serialization { // Token: 0x020004EE RID: 1262 internal class ListSerializationSurrogate : ISerializationSurrogate { // Token: 0x06003C2D RID: 15405 RVA: 0x00069F48 File Offset: 0x00068148 public void GetObjectData(object obj, SerializationInfo info, StreamingContext context) { IList list = (IList)obj; info.AddValue("_size", list.Count); info.AddValue("_items", ListSerializationSurrogate.ArrayFromGenericList(list)); info.AddValue("_version", 0); } // Token: 0x06003C2E RID: 15406 RVA: 0x00069F8C File Offset: 0x0006818C public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { IList list = (IList)Activator.CreateInstance(obj.GetType()); int @int = info.GetInt32("_size"); object obj2; if (@int == 0) { obj2 = list; } else { IEnumerator enumerator = ((IEnumerable)info.GetValue("_items", typeof(IEnumerable))).GetEnumerator(); for (int i = 0; i < @int; i++) { if (!enumerator.MoveNext()) { throw new InvalidOperationException(); } list.Add(enumerator.Current); } obj2 = list; } return obj2; } // Token: 0x06003C2F RID: 15407 RVA: 0x0006A024 File Offset: 0x00068224 private static Array ArrayFromGenericList(IList list) { Array array = Array.CreateInstance(list.GetType().GetGenericArguments()[0], list.Count); list.CopyTo(array, 0); return array; } // Token: 0x04001251 RID: 4689 public static readonly ISerializationSurrogate Default = new ListSerializationSurrogate(); } }