Beispiel #1
0
 /// <summary>
 /// Register and subscribe to packet receive event
 /// </summary>
 /// <param name="onReceive">event that will be called when packet deserialized with ReadPacket method</param>
 /// <param name="packetConstructor">Method that constructs packet instead of slow Activator.CreateInstance</param>
 /// <exception cref="InvalidTypeException"><typeparamref name="T"/>'s fields are not supported, or it has no fields</exception>
 public void Subscribe <T>(Action <T> onReceive, Func <T> packetConstructor) where T : class, new()
 {
     _netSerializer.Register <T>();
     _callbacks[GetHash <T>()] = (reader, userData) =>
     {
         var reference = packetConstructor();
         _netSerializer.Deserialize(reader, reference);
         onReceive(reference);
     };
 }