public void SendUpdates() { foreach (var objID in objectsToBeUpdated) { if (removedObjects.Contains(objID)) { continue; } DebugUtils.Assert(netObjects.ContainsKey(objID), $"NetObject with ID {objID} doesn't exist!"); var obj = netObjects[objID]; var onUpdate = obj.OnUpdate; DebugUtils.Assert(onUpdate != null, $"NetObject has no OnUpdate function."); var update = onUpdate(); DebugUtils.Assert(update != null, $"NetObject update is null."); // Send update or something var method = DeliveryMethod.ReliableOrdered; switch (obj.NetMode) { case NetMode.LATEST: method = DeliveryMethod.Sequenced; break; case NetMode.IMPORTANT: method = DeliveryMethod.ReliableOrdered; break; } var updatePacket = new NetUpdatePacket { NetID = obj.ID, Update = update }; if (obj.SendToAllClients) { server.SendToAllClients(updatePacket, method); } else { server.SendToSingleClient(updatePacket, obj.ClientID, method); } } objectsToBeUpdated.Clear(); }