public object Unpack(Packer packer) { var packerObject = new Packer.PackerObject(); packerObject.meta = (Packer.Meta)packer.UnpackInternal(); packerObject.data = (byte[])packer.UnpackInternal(); return(packerObject); }
public object Unpack(Packer packer) { var meta = new Packer.Meta(); meta.metaTypeId = 0; meta.meta = new Dictionary <System.Type, Packer.MetaType>(); var asms = System.AppDomain.CurrentDomain.GetAssemblies(); var arr = (Packer.MetaType[])packer.UnpackInternal(); for (int i = 0; i < arr.Length; ++i) { var data = arr[i]; for (int j = 0; j < asms.Length; ++j) { var type = asms[j].GetType(data.type); if (type != null) { meta.meta.Add(type, data); break; } } } return(meta); }
public object Unpack(Packer packer, System.Type rootType) { var instance = System.Activator.CreateInstance(rootType); var fields = rootType.GetCachedFields(); for (int i = 0; i < fields.Length; ++i) { var type = packer.ReadByte(); if (type == (byte)TypeValue.Null) { fields[i].SetValue(instance, null); continue; } if (packer.serializers.TryGetValue(type, out var ser) == true) { fields[i].SetValue(instance, ser.unpack.Invoke(packer)); } else { packer.UnpackInternal(); } } return(instance); }
public object Unpack(Packer packer) { var length = Int32Serializer.UnpackDirect(packer); var typeIdValue = Int32Serializer.UnpackDirect(packer); var typeValue = packer.GetMetaType(typeIdValue); var type = packer.GetMetaType(Int32Serializer.UnpackDirect(packer)); var t = type.MakeGenericType(typeValue); var dict = (ME.ECS.Collections.IDictionaryInt)System.Activator.CreateInstance(t); for (int i = 0; i < length; ++i) { dict.Add(packer.UnpackInternal(), packer.UnpackInternal()); } return(dict); }
public static Packer FromStream(Serializers serializers, System.IO.MemoryStream stream) { var packer = new Packer(serializers, stream); var packerObject = (PackerObject)packer.UnpackInternal(); packer.meta = packerObject.meta; packer.stream = new System.IO.MemoryStream(packerObject.data); return(packer); }
public object Unpack(Packer packer) { var length = Int32Serializer.UnpackDirect(packer); var meta = new Packer.MetaType[length]; for (int i = 0; i < length; ++i) { meta[i] = packer.UnpackInternal <Packer.MetaType>(); } return(meta); }
public object Unpack(Packer packer) { var length = Int32Serializer.UnpackDirect(packer); var arr = new object[length]; for (int i = 0; i < length; ++i) { arr[i] = packer.UnpackInternal(); } return(arr); }
public object Unpack(Packer packer) { var type = packer.GetMetaType(Int32Serializer.UnpackDirect(packer)); var typeValue = packer.GetMetaType(Int32Serializer.UnpackDirect(packer)); var typeProvider = packer.GetMetaType(Int32Serializer.UnpackDirect(packer)); var sentinelType = type.MakeGenericType(typeValue, typeProvider); var poolClassType = typeof(PoolClass <>).MakeGenericType(sentinelType); var spawnMethod = poolClassType.GetMethod("Spawn", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); var sentinel = (IDisposeSentinel)spawnMethod.Invoke(null, null); sentinel.SetData(packer.UnpackInternal()); sentinel.SetTick(Int64Serializer.UnpackDirect(packer)); return(sentinel); }
public void Unpack <T>(Packer packer, T objectToOverwrite) where T : class { var fields = typeof(T).GetCachedFields(); for (int i = 0; i < fields.Length; ++i) { var type = packer.ReadByte(); if (type == (byte)TypeValue.Null) { fields[i].SetValue(objectToOverwrite, null); continue; } if (packer.serializers.TryGetValue(type, out var ser) == true) { fields[i].SetValue(objectToOverwrite, ser.unpack.Invoke(packer)); } else { packer.UnpackInternal(); } } }
public object Unpack(Packer packer) { var length = Int32Serializer.UnpackDirect(packer); var isArray = packer.ReadByte(); var typeId = Int32Serializer.UnpackDirect(packer); var typeIn = packer.GetMetaType(typeId); IList arr = null; if (isArray == 2) { var rank = Int32Serializer.UnpackDirect(packer); if (rank > 1) { var lengthArray = new int[rank]; for (int j = 0; j < rank; ++j) { lengthArray[j] = Int32Serializer.UnpackDirect(packer); } var arrData = System.Array.CreateInstance(typeIn, lengthArray); arr = arrData; void WrapDimension(int[] ids, int currentDimension) { if (currentDimension == rank) { arrData.SetValue(packer.UnpackInternal(), ids); } else { for (int i = 0, len = arrData.GetLength(currentDimension); i < len; i++) { ids[currentDimension] = i; WrapDimension(ids, currentDimension + 1); } } } WrapDimension(new int[rank], 0); } } else if (isArray == 1) { arr = System.Array.CreateInstance(typeIn, length); for (int i = 0; i < length; ++i) { arr[i] = packer.UnpackInternal(); } } else { var type = packer.GetMetaType(Int32Serializer.UnpackDirect(packer)); var t = type.MakeGenericType(typeIn); arr = (IList)System.Activator.CreateInstance(t); for (int i = 0; i < length; ++i) { arr.Add(packer.UnpackInternal()); } } return(arr); }
public object Unpack(Packer packer) { var bytes = (byte[])packer.UnpackInternal(); return(System.Text.UTF8Encoding.UTF8.GetString(bytes)); }
public static string UnpackDirect(Packer packer) { var bytes = (byte[])packer.UnpackInternal(); return(System.Text.UTF8Encoding.UTF8.GetString(bytes)); }