void _server_MessageError(object sender, Shared.Net.Connections.ProtocolMessageEventArgs <ErrorMessage> e) { if (e.Message.ErrorCode == ErrorCodes.DesyncDetected) { OnDesyncDetected(new DesyncEventArgs()); } }
void server_MessageEntityData(object sender, Shared.Net.Connections.ProtocolMessageEventArgs <EntityDataMessage> e) { // update the entity if (e.Message.Entity != null) { var dynEntity = (ICharacterEntity)e.Message.Entity; _dynamicEntityManager.UpdateEntity(dynEntity); if (dynEntity.DynamicId == PlayerManager.PlayerCharacter.DynamicId) { //These are properties not synchronized with server, need to keep the local one ! var prevDisplacementMode = PlayerManager.PlayerCharacter.DisplacementMode; var staminaBckp = new Energy(PlayerManager.PlayerCharacter.Stamina); var oxygenBckp = new Energy(PlayerManager.PlayerCharacter.Oxygen); var playerChar = (PlayerCharacter)dynEntity; playerChar.DisplacementMode = prevDisplacementMode; playerChar.Stamina = staminaBckp; playerChar.Oxygen = oxygenBckp; PlayerManager.PlayerCharacter = playerChar; } } }
void EntityManagerEntityLockChanged(object sender, Shared.Net.Connections.ProtocolMessageEventArgs <Shared.Net.Messages.EntityLockMessage> e) { if (e.Message.EntityLink.IsStatic) { GetArea(new Vector3D(e.Message.EntityLink.ChunkPosition.X * AbstractChunk.ChunkSize.X, 0, e.Message.EntityLink.ChunkPosition.Z * AbstractChunk.ChunkSize.Z)).OnEntityLockChanged(e); } }