| 187 | } |
| 188 | |
| 189 | void NetworkLagDriver::OnUpdate() |
| 190 | { |
| 191 | if (!_driver) |
| 192 | return; |
| 193 | |
| 194 | // Update all pending messages and events |
| 195 | const double deltaTime = Time::Update.UnscaledDeltaTime.GetTotalMilliseconds(); |
| 196 | for (int32 i = 0; i < _messages.Count(); i++) |
| 197 | { |
| 198 | auto& msg = _messages[i]; |
| 199 | msg.Lag -= deltaTime; |
| 200 | if (msg.Lag > 0.0) |
| 201 | continue; |
| 202 | |
| 203 | // Use this helper message as a container to send the stored data and length to the ENet driver |
| 204 | NetworkMessage message; |
| 205 | message.Buffer = msg.MessageData.Get(); |
| 206 | message.Length = msg.MessageLength; |
| 207 | |
| 208 | switch (msg.Type) |
| 209 | { |
| 210 | case 0: |
| 211 | _driver->SendMessage(msg.ChannelType, message); |
| 212 | break; |
| 213 | case 1: |
| 214 | _driver->SendMessage(msg.ChannelType, message, msg.Target); |
| 215 | break; |
| 216 | case 2: |
| 217 | _driver->SendMessage(msg.ChannelType, message, msg.Targets); |
| 218 | break; |
| 219 | } |
| 220 | _messages.RemoveAt(i); |
| 221 | } |
| 222 | for (int32 i = 0; i < _events.Count(); i++) |
| 223 | { |
| 224 | auto& e = _events[i]; |
| 225 | e.Lag -= deltaTime; |
| 226 | } |
| 227 | } |
nothing calls this directly
no test coverage detected