QByteArray vectorToData(UVector vec)
{
    QByteArray data;
    data += floatToData(vec.x);
    data += floatToData(vec.y);
    data += floatToData(vec.z);
    return data;
}
QByteArray quaternionToData(UQuaternion quat)
{
    QByteArray data;
    data += floatToData(quat.x);
    data += floatToData(quat.y);
    data += floatToData(quat.z);
    data += floatToData(quat.w);
    return data;
}
Exemplo n.º 3
0
void sendMove(Player* player, float x, float y, float z)
{
    QByteArray data(1,0);
    data[0] = 0xce; // Request number
    data += floatToData(x);
    data += floatToData(y);
    data += floatToData(z);
    win.logMessage(QString("UDP: Moving character"));
    sendMessage(player,MsgUserReliableOrdered4, data);
}
Exemplo n.º 4
0
void sendSetMaxStatRPC(Player* affected, Player* dest, quint8 statId, float value)
{
    QByteArray data(4,51);
    data[0] = affected->pony.netviewId;
    data[1] = affected->pony.netviewId>>8;
    data[3] = statId;
    data += floatToData(value);
    sendMessage(dest, MsgUserReliableOrdered18, data);
}
Exemplo n.º 5
0
void sendSetStatRPC(Player *player, quint8 statId, float value)
{
    QByteArray data(4,50);
    data[0] = player->pony.netviewId;
    data[1] = player->pony.netviewId>>8;
    data[3] = statId;
    data += floatToData(value);
    sendMessage(player, MsgUserReliableOrdered18, data);
}
Exemplo n.º 6
0
void Sync::sendSyncMessage(Player* source, Player* dest)
{
    QByteArray data(2,0);
    data[0] = (quint8)(source->pony.netviewId&0xFF);
    data[1] = (quint8)((source->pony.netviewId>>8)&0xFF);
    data += floatToData(timestampNow());
    //data += rangedSingleToData(source.pony.pos.x, XMIN, XMAX, PosRSSize);
    //data += rangedSingleToData(source.pony.pos.y, YMIN, YMAX, PosRSSize);
    //data += rangedSingleToData(source.pony.pos.z, ZMIN, ZMAX, PosRSSize);
    data += floatToData(source->pony.pos.x);
    data += floatToData(source->pony.pos.y);
    data += floatToData(source->pony.pos.z);
    //data += rangedSingleToData(source.pony.rot.x, ROTMIN, ROTMAX, RotRSSize);
    data += rangedSingleToData(source->pony.rot.y, ROTMIN, ROTMAX, RotRSSize);
    //data += rangedSingleToData(source.pony.rot.z, ROTMIN, ROTMAX, RotRSSize);
    sendMessage(dest, MsgUserUnreliable, data);

    //win.logMessage("UDP: Syncing "+QString().setNum(source->pony.netviewId)+" to "+QString().setNum(dest->pony.netviewId));
}
Exemplo n.º 7
0
void sendMessage(Player* player,quint8 messageType, QByteArray data)
{
    QByteArray msg(3,0);
    // MessageType
    msg[0] = messageType;
    // Sequence
    msg[1] = 0;
    msg[2] = 0;
    if (messageType == MsgPing)
    {
        msg.resize(6);
        // Sequence
        msg[1] = 0;
        msg[2] = 0;
        // Payload size
        msg[3] = 8;
        msg[4] = 0;
        // Ping number
        player->lastPingNumber++;
        msg[5]=(quint8)player->lastPingNumber;
    }
    else if (messageType == MsgPong)
    {
        msg.resize(6);
        // Payload size
        msg[3] = 8*5;
        msg[4] = 0;
        // Ping number
        msg[5]=(quint8)player->lastPingNumber;
        // Timestamp
        msg += floatToData(timestampNow());
    }
    else if (messageType == MsgUserUnreliable)
    {
        msg.resize(5);
        // Sequence
        msg[1] = (quint8)(player->udpSequenceNumbers[32]&0xFF);
        msg[2] = (quint8)((player->udpSequenceNumbers[32]>>8)&0xFF);
        // Data size
        msg[3] = (quint8)((8*(data.size()))&0xFF);
        msg[4] = (quint8)(((8*(data.size())) >> 8)&0xFF);
        // Data
        msg += data;
        player->udpSequenceNumbers[32]++;

        //app.logMessage(QString("Sending sync data :")+msg.toHex());
    }