모델 업로드 구조 완성
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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_;
|
||||
|
||||
@@ -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 =
|
||||
|
||||
Reference in New Issue
Block a user