public override Object unpack(ITransport transport) { int length = (int)Int32.unpack(transport); HeteroMap map = new HeteroMap(length); for (int i = 0; i < length; i++) { int keypid = (int)Int32.unpack(transport); AbstractPacker keypacker = getPacker(keypid); Object key = keypacker.unpack(transport); int valpid = (int)Int32.unpack(transport); AbstractPacker valpacker = getPacker(valpid); Object val = valpacker.unpack(transport); map.Add(key, keypacker, val, valpacker); } return(map); }
public override void pack(Object obj, ITransport transport) { HeteroMap map = (HeteroMap)obj; if (map == null) { Int32.pack(0, transport); } else { Int32.pack(map.Count, transport); foreach (DictionaryEntry e in map) { AbstractPacker keypacker = map.getKeyPacker(e.Key); AbstractPacker valpacker = map.getValuePacker(e.Key); Int32.pack(keypacker.getId(), transport); keypacker.pack(e.Key, transport); Int32.pack(valpacker.getId(), transport); valpacker.pack(e.Value, transport); } } }
public SetOf(int id, AbstractPacker type) { this.type = type; this.id = id; }
public MapOf(int id, AbstractPacker keytype, AbstractPacker valtype) { this.keytype = keytype; this.valtype = valtype; this.id = id; }
private void Awake() { _packer = GetComponent <AbstractPacker>(); }