/// <summary> /// Reads packet with known type /// </summary> /// <param name="reader">NetDataReader with packet</param> /// <returns>Returns packet if packet in reader is matched type</returns> public T ReadKnownPacket <T>(NetDataReader reader) where T : class, new() { ulong name = _hasher.ReadHash(reader); var info = _cache[name]; ulong typeHash = _hasher.GetHash(typeof(T).Name); if (typeHash != name) { return(null); } info.Reference = info.CreatorFunc != null?info.CreatorFunc() : Activator.CreateInstance <T>(); for (int i = 0; i < info.ReadDelegate.Length; i++) { info.ReadDelegate[i](reader); } return((T)info.Reference); }
private StructInfo ReadInfo(NetDataReader reader) { ulong hash = _hasher.ReadHash(reader); StructInfo info; if (!_cache.TryGetValue(hash, out info)) { throw new Exception("Undefined packet received"); } return(info); }