// In charge of sending all messages pending sending public void UpdateSystem() { bool messagingInfoFound = ComponentsManager.Instance.TryGetComponent(new EntityComponent(0), out MessagingInfo messagingInfo); if (!messagingInfoFound) { messagingInfo = new MessagingInfo() { currentMessageId = 0 }; } if (ECSManager.Instance.NetworkManager.isServer) { ComponentsManager.Instance.ForEach <ReplicationMessage>((entityID, msg) => { msg.messageID = messagingInfo.currentMessageId++; ECSManager.Instance.NetworkManager.SendReplicationMessage(msg); }); } if (ECSManager.Instance.NetworkManager.isClient) { ComponentsManager.Instance.ForEach <InputMessage>((entityID, msg) => { msg.messageID = messagingInfo.currentMessageId++; ECSManager.Instance.NetworkManager.SendInputMessage(msg); }); } ComponentsManager.Instance.SetComponent <MessagingInfo>(new EntityComponent(0), messagingInfo); }
// In charge of sending all messages pending sending public void UpdateSystem() { if (ECSManager.Instance.RunningFastForward) { return; } bool messagingInfoFound = ComponentsManager.Instance.TryGetComponent(new EntityComponent(0), out MessagingInfo messagingInfo); if (!messagingInfoFound) { messagingInfo = new MessagingInfo() { currentMessageId = 0 }; } if (ECSManager.Instance.NetworkManager.isServer) { ComponentsManager.Instance.ForEach <ReplicationMessage>((entityID, msg) => { msg.messageID = messagingInfo.currentMessageId++; ECSManager.Instance.NetworkManager.SendReplicationMessage(msg); msg.handled = true; ComponentsManager.Instance.SetComponent <ReplicationMessage>(entityID, msg); }); } if (ECSManager.Instance.NetworkManager.isClient) { uint clientId = (uint)ECSManager.Instance.NetworkManager.LocalClientId; if (ComponentsManager.Instance.TryGetComponent(clientId, out UserInputComponent userInput)) { for (int i = 0; i < userInput.pendingInputsMessages.Count; i++) { ReplicationMessage msg = userInput.pendingInputsMessages[i]; ECSManager.Instance.NetworkManager.SendReplicationMessageToServer(msg); } userInput.pendingInputsMessages.Clear(); } } ComponentsManager.Instance.SetComponent <MessagingInfo>(new EntityComponent(0), messagingInfo); }