public void MessageReceived(IoSession session, object message) { if (message is VMNetMessage) { GameThread.NextUpdate(x => { var nmsg = (VMNetMessage)message; var cli = (VMNetClient)session.GetAttribute('c'); if (cli.AvatarState == null) { //we're still waiting for the avatar state so the user can join if (nmsg.Type == VMNetMessageType.AvatarData) { var state = new VMNetAvatarPersistState(); try { state.Deserialize(new System.IO.BinaryReader(new MemoryStream(nmsg.Data))); } catch (Exception) { return; } cli.PersistID = state.PersistID; cli.AvatarState = state; OnConnect(cli); } } else { OnMessage(cli, nmsg); } }); } }
public override void Deserialize(BinaryReader reader) { base.Deserialize(reader); Version = reader.ReadUInt16(); AvatarState = new VMNetAvatarPersistState(); AvatarState.Deserialize(reader); }