bulletadd
This commit is contained in:
@@ -430,6 +430,77 @@ void netprot::Serialize(ChunkMod* chmod, char* buf[], uint32_t* buflen) {
|
||||
*buflen = sizeof(uint32_t) * 3 + 3;
|
||||
}
|
||||
|
||||
void netprot::Serialize(BulletAdd* bull, char* buf[], uint32_t* buflen) {
|
||||
*buf[0] = (char)netprot::PACKET_TYPE::BULLET;
|
||||
|
||||
uint64_t tstamp = bull->tstamp;
|
||||
uint8_t ts8[sizeof(uint64_t)] = {
|
||||
(uint8_t)((tstamp >> 56) & 0xFF),
|
||||
(uint8_t)((tstamp >> 48) & 0xFF),
|
||||
(uint8_t)((tstamp >> 40) & 0xFF),
|
||||
(uint8_t)((tstamp >> 32) & 0xFF),
|
||||
(uint8_t)((tstamp >> 24) & 0xFF),
|
||||
(uint8_t)((tstamp >> 16) & 0xFF),
|
||||
(uint8_t)((tstamp >> 8) & 0xFF),
|
||||
(uint8_t)(tstamp & 0xFF)
|
||||
};
|
||||
|
||||
memcpy(*buf + 1, ts8, sizeof(uint64_t));
|
||||
|
||||
uint64_t tid = bull->tid;
|
||||
uint8_t tid8[sizeof(uint64_t)] = {
|
||||
(uint8_t)((tid >> 56) & 0xFF),
|
||||
(uint8_t)((tid >> 48) & 0xFF),
|
||||
(uint8_t)((tid >> 40) & 0xFF),
|
||||
(uint8_t)((tid >> 32) & 0xFF),
|
||||
(uint8_t)((tid >> 24) & 0xFF),
|
||||
(uint8_t)((tid >> 16) & 0xFF),
|
||||
(uint8_t)((tid >> 8) & 0xFF),
|
||||
(uint8_t)(tid & 0xFF)
|
||||
};
|
||||
|
||||
memcpy(*buf + 1 + sizeof(uint64_t), tid8, sizeof(uint64_t));
|
||||
|
||||
uint32_t vec[3];
|
||||
memcpy(vec, &bull->pos, sizeof(Vector3f)); // Pour d<>naturer les floats.
|
||||
|
||||
uint8_t vec8[3 * sizeof(uint32_t)] = {
|
||||
(uint8_t)((vec[0] >> 24) & 0xFF),
|
||||
(uint8_t)((vec[0] >> 16) & 0xFF),
|
||||
(uint8_t)((vec[0] >> 8) & 0xFF),
|
||||
(uint8_t)(vec[0] & 0xFF),
|
||||
(uint8_t)((vec[1] >> 24) & 0xFF),
|
||||
(uint8_t)((vec[1] >> 16) & 0xFF),
|
||||
(uint8_t)((vec[1] >> 8) & 0xFF),
|
||||
(uint8_t)(vec[1] & 0xFF),
|
||||
(uint8_t)((vec[2] >> 24) & 0xFF),
|
||||
(uint8_t)((vec[2] >> 16) & 0xFF),
|
||||
(uint8_t)((vec[2] >> 8) & 0xFF),
|
||||
(uint8_t)(vec[2] & 0xFF) };
|
||||
|
||||
memcpy(*buf + 1 + sizeof(uint64_t) * 2, vec8, sizeof(uint32_t) * 3);
|
||||
|
||||
memcpy(vec, &bull->dir, sizeof(Vector3f)); // Pour d<>naturer les floats.
|
||||
|
||||
uint8_t dir8[3 * sizeof(uint32_t)] = {
|
||||
(uint8_t)((vec[0] >> 24) & 0xFF),
|
||||
(uint8_t)((vec[0] >> 16) & 0xFF),
|
||||
(uint8_t)((vec[0] >> 8) & 0xFF),
|
||||
(uint8_t)(vec[0] & 0xFF),
|
||||
(uint8_t)((vec[1] >> 24) & 0xFF),
|
||||
(uint8_t)((vec[1] >> 16) & 0xFF),
|
||||
(uint8_t)((vec[1] >> 8) & 0xFF),
|
||||
(uint8_t)(vec[1] & 0xFF),
|
||||
(uint8_t)((vec[2] >> 24) & 0xFF),
|
||||
(uint8_t)((vec[2] >> 16) & 0xFF),
|
||||
(uint8_t)((vec[2] >> 8) & 0xFF),
|
||||
(uint8_t)(vec[2] & 0xFF) };
|
||||
|
||||
memcpy(*buf + 1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 3, dir8, sizeof(uint32_t) * 3);
|
||||
|
||||
*buflen = 1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 6;
|
||||
}
|
||||
|
||||
void netprot::Serialize(ErrorLog* errlog, char* buf[], uint32_t* buflen) {
|
||||
*buf[0] = (char)netprot::PACKET_TYPE::ERRLOG;
|
||||
|
||||
@@ -876,6 +947,74 @@ bool netprot::Deserialize(ChunkMod* chmod, char* buf, uint32_t* buflen) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool netprot::Deserialize(BulletAdd* bull, char* buf, uint32_t* buflen) {
|
||||
if (*buflen <= sizeof(BulletAdd))
|
||||
return false;
|
||||
|
||||
uint8_t tst[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 };
|
||||
memcpy(tst, &buf[1], sizeof(uint64_t));
|
||||
bull->tstamp =
|
||||
(uint64_t)tst[0] << 56 |
|
||||
(uint64_t)tst[1] << 48 |
|
||||
(uint64_t)tst[2] << 40 |
|
||||
(uint64_t)tst[3] << 32 |
|
||||
(uint64_t)tst[4] << 24 |
|
||||
(uint64_t)tst[5] << 16 |
|
||||
(uint64_t)tst[6] << 8 |
|
||||
(uint64_t)tst[7];
|
||||
|
||||
memcpy(tst, &buf[1 + sizeof(uint64_t)], sizeof(uint64_t));
|
||||
bull->tid =
|
||||
(uint64_t)tst[0] << 56 |
|
||||
(uint64_t)tst[1] << 48 |
|
||||
(uint64_t)tst[2] << 40 |
|
||||
(uint64_t)tst[3] << 32 |
|
||||
(uint64_t)tst[4] << 24 |
|
||||
(uint64_t)tst[5] << 16 |
|
||||
(uint64_t)tst[6] << 8 |
|
||||
(uint64_t)tst[7];
|
||||
|
||||
uint8_t subvec[3 * sizeof(uint32_t)] = { 0,0,0,0,0,0,0,0,0,0,0,0 };
|
||||
memcpy(subvec, &buf[1 + sizeof(uint64_t) * 2], sizeof(uint8_t) * 12);
|
||||
uint32_t vec[3] = {
|
||||
(uint32_t)subvec[0] << 24 |
|
||||
(uint32_t)subvec[1] << 16 |
|
||||
(uint32_t)subvec[2] << 8 |
|
||||
(uint32_t)subvec[3],
|
||||
(uint32_t)subvec[4] << 24 |
|
||||
(uint32_t)subvec[5] << 16 |
|
||||
(uint32_t)subvec[6] << 8 |
|
||||
(uint32_t)subvec[7],
|
||||
(uint32_t)subvec[8] << 24 |
|
||||
(uint32_t)subvec[9] << 16 |
|
||||
(uint32_t)subvec[10] << 8 |
|
||||
(uint32_t)subvec[11] };
|
||||
|
||||
memcpy(&bull->pos, vec, sizeof(uint32_t) * 3);
|
||||
|
||||
memcpy(subvec, &buf[1 + sizeof(uint64_t) * 2 + sizeof(uint8_t) * 12], sizeof(uint8_t) * 12);
|
||||
|
||||
uint32_t dir[3] = {
|
||||
(uint32_t)subvec[0] << 24 |
|
||||
(uint32_t)subvec[1] << 16 |
|
||||
(uint32_t)subvec[2] << 8 |
|
||||
(uint32_t)subvec[3],
|
||||
(uint32_t)subvec[4] << 24 |
|
||||
(uint32_t)subvec[5] << 16 |
|
||||
(uint32_t)subvec[6] << 8 |
|
||||
(uint32_t)subvec[7],
|
||||
(uint32_t)subvec[8] << 24 |
|
||||
(uint32_t)subvec[9] << 16 |
|
||||
(uint32_t)subvec[10] << 8 |
|
||||
(uint32_t)subvec[11] };
|
||||
|
||||
memcpy(&bull->dir, dir, sizeof(uint32_t) * 3);
|
||||
|
||||
*buflen = 1 + sizeof(uint64_t) * 2 + sizeof(uint8_t) * 24;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool netprot::Deserialize(ErrorLog* errlog, char* buf, uint32_t *buflen) {
|
||||
if (*buflen <= sizeof(ErrorLog))
|
||||
return false;
|
||||
@@ -969,9 +1108,7 @@ netprot::Packet netprot::getPack(char* buf, uint32_t *buflen) {
|
||||
return pck;
|
||||
}
|
||||
|
||||
netprot::Packet netprot::getPack(netprot::Buffer* buf) {
|
||||
return netprot::getPack(buf->ptr, &buf->len);
|
||||
}
|
||||
netprot::Packet netprot::getPack(netprot::Buffer* buf) { return netprot::getPack(buf->ptr, &buf->len); }
|
||||
|
||||
bool netprot::emptyPack(netprot::Packet pck) {
|
||||
switch (pck.type) {
|
||||
|
Reference in New Issue
Block a user