Beispiel #1
0
    byte[] Serialize <T>(OrderedNetworkPacket <T> packet, uint objectId, uint id)
    {
        PacketHeader     header     = new PacketHeader();
        UserPacketHeader userHeader = new UserPacketHeader();
        MemoryStream     stream     = new MemoryStream();

        header.protocolId = 0;

        header.packetType = packet.packetType;

        if (packet.packetType == PacketType.User)
        {
            userHeader.packetType = packet.userPacketType;
            userHeader.senderId   = NetworkManager.Instance.clientId;
            userHeader.objectId   = objectId;
        }

        header.Serialize(stream);
        userHeader.Serialize(stream);
        packet.Serialize(stream, id);// igual que Serialize normal, pero se agrega un paquete con el ID

        stream.Close();

        return(stream.ToArray());
    }
Beispiel #2
0
    byte[] Serialize <T>(OrderedNetworkPacket <T> packet, uint objectId, uint id)
    {
        PacketHeader     header     = new PacketHeader();
        UserPacketHeader userHeader = new UserPacketHeader();
        MemoryStream     stream     = new MemoryStream();

        header.protocolId = NetworkManager.PROTOCOL_ID; // TODO

        header.packetType = packet.packetType;

        if (packet.packetType == PacketType.User)
        {
            userHeader.packetType = packet.userPacketType;
            userHeader.senderId   = NetworkManager.Instance.clientId;
            userHeader.objectId   = objectId;
        }

        header.Serialize(stream);
        userHeader.Serialize(stream);
        packet.Serialize(stream, id);

        stream.Close();

        return(stream.ToArray());
    }
Beispiel #3
0
    public void SendPacket <T>(OrderedNetworkPacket <T> packet, uint objectId, bool reliable, uint id)
    {
        byte[] bytes = Serialize(packet, objectId, id);// se serializa junto a su ID para conservar el orden

        if (ConnectionManager.Instance.isServer)
        {
            NetworkManager.Instance.Broadcast(bytes, reliable);
        }
        else
        {
            AcknowledgeChecker acknowledgeChecker = ConnectionManager.Instance.client.acknowledgeChecker;
            uint acknowledgeId = acknowledgeChecker.NextAcknowledge;// saco un nuevo ack
            bytes = WrapReliabilityPacket(bytes, reliable, acknowledgeChecker, acknowledgeId);
            NetworkManager.Instance.SendToServer(bytes);
            if (reliable)
            {
                ConnectionManager.Instance.QueuePacket(bytes, acknowledgeId);// todo lo que esta en esta lista se spamea
            }
        }
    }
Beispiel #4
0
    public void SendPacket <T>(OrderedNetworkPacket <T> packet, uint objectId, bool reliable, uint id)
    {
        byte[] bytes = Serialize(packet, objectId, id);

        if (ConnectionManager.Instance.isServer)
        {
            NetworkManager.Instance.Broadcast(bytes, reliable);
        }
        else
        {
            AckChecker ackChecker = ConnectionManager.Instance.OwnClient.ackChecker;
            uint       ackId      = ackChecker.NewAck;
            bytes = WrapReliabilityOntoPacket(bytes, reliable, ackChecker, ackId);
            NetworkManager.Instance.SendToServer(bytes);
            if (reliable)
            {
                ConnectionManager.Instance.QueuePacket(bytes, ackId);
            }
        }
    }