Exemplo n.º 1
0
        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();
        }