scripts
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user