public static void NetworkReadingThread() { var networkStream = _tcpClient.GetStream(); var messageReader = new MessageReader(_tcpClient); while (true) { var requestChunkMessage = new RequestChunkMessage(); var requestChunkMessageBytes = requestChunkMessage.ToBytes(); lock (_tcpClient) { networkStream.Write(requestChunkMessageBytes, 0, requestChunkMessageBytes.Length); } var message = messageReader.GetMessage().Result; switch (message) { case ChunkToProcessMessage chunkToProcess: _chunksToProcess.Add(chunkToProcess); break; } } }
private static void handleRequestChunkMessage(NetIncomingMessage _Im) { var message = new RequestChunkMessage(_Im); var timeDelay = (float)(NetTime.Now - _Im.SenderConnection.GetLocalTime(message.MessageTime)); Client var_Client = Configuration.networkManager.getClient(_Im.SenderEndPoint); GameLibrary.Map.Chunk.Chunk var_Chunk = GameLibrary.Map.World.World.world.getDimensionById(message.DimensionId).getChunkAtPosition(message.Position); //GameLibrary.Logger.Logger.LogDeb("Client Requested Chunk at X: " + message.Position.X + " Y: " + message.Position.Y); if (var_Chunk != null) { //Configuration.networkManager.SendMessageToClient(new UpdateRegionMessage((GameLibrary.Model.Map.Region.Region)var_Chunk.Parent), var_Client); Configuration.networkManager.SendMessageToClient(new UpdateChunkMessage(var_Chunk), var_Client); /*foreach (AnimatedObject var_AnimatedObject in var_Chunk.getAllObjectsInChunk()) * { * Configuration.networkManager.SendMessageToClient(new UpdateObjectMessage(var_AnimatedObject), var_Client); * }*/ } else { GameLibrary.Logger.Logger.LogErr("ServerIGameMessageManager->handleRequestChunkMessage(...): Chunk an Position X: " + message.Position.X + " Y: " + message.Position.Y + " existiert nicht!"); } }
public void OnChunkRequested(RequestChunkMessage message) { bool valid = world.validChunkRequest(message.client.transform.position, message.position, wl); if (valid) { message.client.connectionToClient.Send(new ChunkMessage(world.getChunk(message.position), message.position, valid)); } }
protected virtual Message BuildMessage(int messageType, byte[] messageData) { switch (messageType) { case RequestChunkMessage.Id: return(RequestChunkMessage.Parse(messageData)); case ChunkToProcessMessage.Id: return(ChunkToProcessMessage.Parse(messageData)); case ChunkCompletedMessage.Id: return(ChunkCompletedMessage.Parse(messageData)); default: return(null); } }