public static Packer.Meta UnpackDirect(Packer packer) { var meta = new Packer.Meta(); meta.metaTypeId = 0; meta.meta = new Dictionary <System.Type, Packer.MetaType>(); meta.typeById = new Dictionary <int, System.Type>(); var asms = System.AppDomain.CurrentDomain.GetAssemblies(); var arr = MetaTypeArraySerializer.UnpackDirect(packer); 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); meta.typeById.Add(data.id, type); break; } } } return(meta); }
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 static void PackDirect(Packer packer, Packer.Meta meta) { var arr = new Packer.MetaType[meta.meta.Count]; var i = 0; foreach (var kv in meta.meta) { arr[i++] = kv.Value; } MetaTypeArraySerializer.PackDirect(packer, arr); }