void C_OnReceivedMessage(byte[] rawMessage) { SharpSerializer ser = SharpSerializer.Create(rawMessage); SharpConnectionMessages incomingType = (SharpConnectionMessages)ser.ReadByte(); if (incomingType == SharpConnectionMessages.ClientConnected) { SharpClient incomingClient = new SharpClient(ref ser); this.room.AssignClient(incomingClient); C_OnClientConnected(incomingClient); } else if (incomingType == SharpConnectionMessages.ClientDisconnected) { short netID = ser.ReadInt16(); C_OnClientDisconnected(this.room.Get(netID)); } else if (incomingType == SharpConnectionMessages.DirectData) { short sender = ser.ReadShort(); int channel = ser.ReadInt32(); int packageSize = ser.ReadInt32(); byte[] rawData = ser.ReadBytes(packageSize); C_OnReceivedData(this.room.Get(sender), channel, rawData); } ser.Post(); }