#pragma once #include namespace Packet { enum class Opcode : std::uint16_t { NOP, SPAWNMODEL, DESPAWNMODEL, UPDATEMODEL, REQUESTMODELIDLIST, CLIENTID, COUNT }; struct Header { Opcode opcode; double timestamp; std::uint32_t body_length; std::vector Serialize() { std::vector serialize(14); ::memcpy(serialize.data(), &opcode, 2); ::memcpy(serialize.data() + 2, ×tamp, 8); ::memcpy(serialize.data() + 10, &body_length, 4); return serialize; } void Deserialize(std::vector& data) { ::memcpy(&opcode, data.data(), 2); ::memcpy(×tamp, data.data() + 2, 8); ::memcpy(&body_length, data.data() + 10, 4); } }; } // namespace Packet