public NetworkEvent(ushort networkedObjectId, NetworkEventType networkEventType, NetworkSubeventType networkSubeventType, object data) { this.destNetId = (NetworkIdentity)NetworkSerializer.GetNetworkedObjects()[networkedObjectId]; this.networkEventType = networkEventType; this.networkSubeventType = networkSubeventType; this.data = data; }
// Check if message is valid. If so, distribute messages to their appropriate network identities. Else, get the rest if the message. private static void ReceiveCallback(IAsyncResult ar) { RecvState state = (RecvState)ar.AsyncState; int bytesRead = state.workSocket.EndReceive(ar); ushort messageLength = BitConverter.ToUInt16(state.recvBuffer, 0); bool hasTerminator = state.recvBuffer[messageLength] == 255 && state.recvBuffer[messageLength + 1] == 255 && state.recvBuffer[messageLength + 2] == 255; if (bytesRead > 2 && hasTerminator) { NetworkSerializer.DistributeMessages(state.recvBuffer); state.recvBuffer = new byte[RECV_BUFFER_SIZE]; } else { state.workSocket.BeginReceive(state.recvBuffer, 0, RECV_BUFFER_SIZE, 0, new AsyncCallback(ReceiveCallback), state); } }