모델 업로드 구조 완성

This commit is contained in:
2025-06-15 03:42:25 +09:00
parent 93fda88d75
commit 06a1e41dc8
13 changed files with 149 additions and 128 deletions

View File

@@ -138,12 +138,12 @@ class IOCP {
void destruct();
void registerTCPSocket(IOCPPASSINDATA* data);
void registerTCPSocket(Socket& sock, std::uint32_t bufsize);
void registerUDPSocket(IOCPPASSINDATA* data, Address recv_addr);
int recv(IOCPPASSINDATA* data);
int recv(Socket& sock, std::vector<char>& data);
// data는 한 가지 소켓에 보내는 패킷만 담아야 합니다
int send(SOCKET sock, std::vector<IOCPPASSINDATA*>* data);
int send(Socket& sock, std::vector<char>& data);
int GetRecvedBytes(SOCKET sock);

View File

@@ -10,12 +10,25 @@ enum class Opcode : std::uint16_t {
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

View File

@@ -20,12 +20,12 @@ struct Snowflake {
std::vector<char> Serialize() {
std::vector<char> serialized;
serialized.insert(serialized.end(), &snowflake,
&snowflake + sizeof(std::uint64_t));
&snowflake + sizeof(snowflake));
return serialized;
}
};
Snowflake GenerateID();
Snowflake GenerateID(std::uint16_t instance);
} // namespace Chattr

View File

@@ -9,6 +9,8 @@
#include "vulkan_engine/vulkan/vertex.h"
#include "utils/snowflake.h"
extern std::uint8_t CLIENTID;
namespace veng {
struct Model {
Model() : graphics_(nullptr) {}
@@ -35,8 +37,9 @@ struct Model {
lifespan(other.lifespan),
OnColision(other.OnColision),
visible(other.visible),
colision(other.colision) {
ID = utils::GenerateID();
colision(other.colision),
networkReplicated(other.networkReplicated) {
ID = utils::GenerateID(CLIENTID);
graphics_ = nullptr;
}
@@ -60,7 +63,9 @@ struct Model {
lifespan(other.lifespan),
OnColision(other.OnColision),
visible(other.visible),
colision(other.colision) {
colision(other.colision),
networkReplicated(other.networkReplicated)
{
ID = other.ID;
::memset(&other.ID, 0, 8);
@@ -92,6 +97,7 @@ struct Model {
OnColision = other.OnColision;
visible = other.visible;
colision = other.colision;
networkReplicated = other.networkReplicated;
graphics_ = other.graphics_;
other.graphics_ = nullptr;
@@ -137,6 +143,7 @@ struct Model {
bool visible = true;
bool colision = false;
bool networkReplicated = true;
private:
class Graphics* graphics_;

View File

@@ -28,7 +28,7 @@ class Engine {
void NetUpdate(std::shared_ptr<Network::Socket> sock);
void NetworkUpload(std::shared_ptr<Network::Socket> sock);
void RefreshFromServer(std::shared_ptr<Network::Socket> sock);
void ResponseToServerAndRefresh(std::shared_ptr<Network::Socket> sock);
std::function<void(Engine&)> BeginPlay = [](Engine& engine) {};
std::function<void(Engine&, std::float_t delta_time)> Tick =