35 lines
609 B
C++
35 lines
609 B
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
namespace Packet {
|
|
|
|
enum class Opcode : std::uint16_t {
|
|
NOP,
|
|
SPAWNMODEL,
|
|
DESPAWNMODEL,
|
|
UPDATEMODEL,
|
|
REQUESTMODELIDLIST,
|
|
CLIENTID,
|
|
COUNT
|
|
};
|
|
|
|
struct Header {
|
|
Opcode opcode;
|
|
std::uint32_t body_length;
|
|
|
|
std::vector<char> Serialize() {
|
|
std::vector<char> serialize(6);
|
|
::memcpy(serialize.data(), &opcode, 2);
|
|
::memcpy(serialize.data() + 2, &body_length, 4);
|
|
return serialize;
|
|
}
|
|
|
|
void Deserialize(std::vector<char>& data) {
|
|
::memcpy(&opcode, data.data(), 2);
|
|
::memcpy(&body_length, data.data() + 2, 4);
|
|
}
|
|
};
|
|
|
|
} // namespace Packet
|