Receiving 📦

This commit is contained in:
MarcEricMartel 2023-11-07 07:46:11 -05:00
parent bc1f4f750b
commit 8bd46ba831

View File

@ -1127,18 +1127,28 @@ void Engine::Render(float elapsedTime) {
sendPackTo<Input>(m_conn.m_sock_udp, &input, &m_bufout, &m_conn.m_srvsockaddr);
lsPck = recvPacks(m_conn.m_sock_udp, &m_buf);
for (auto& pck : lsPck) {
uint32_t bsize = m_buf.len - (pck - m_buf.ptr);
netprot::Sync sync;
netprot::Output out;
switch (netprot::getType(pck, 1)) {
using enum netprot::PACKET_TYPE;
char* prevptr = nullptr;
for (auto& pck : lsPck) { // We could make a few threads out of this.
Sync sync;
Output out;
if (!prevptr)
prevptr = m_buf.ptr;
uint32_t bsize = m_buf.len - (pck - prevptr);
prevptr = pck;
switch (getType(pck, 1)) {
using enum PACKET_TYPE;
case SYNC:
if (!netprot::Deserialize(&sync, pck, &bsize)) {}
if (Deserialize(&sync, pck, &bsize)) {
if (sync.sid != m_conn.getId())
break;
// TODO: Vérifier si les positions concordent.
}
break;
case OUTPUT:
if (!netprot::Deserialize(&out, pck, &bsize)) {}
if (Deserialize(&out, pck, &bsize)) {
RemotePlayer* r = (RemotePlayer*)m_players[out.id];
r->Feed(out);
}
break;
default:
break;