모델 업로드 구조 완성
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
extern std::uint8_t CLIENTID;
|
||||
|
||||
namespace veng {
|
||||
class Engine;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ void BeginPlay(veng::Engine& engine) {
|
||||
engine.SpawnModel("player_flame", "player_flame");
|
||||
player_flame->scale = player->scale;
|
||||
player_flame->colision = false;
|
||||
player_flame->networkReplicated = false;
|
||||
|
||||
spdlog::info("player addr: {}", (void*)player);
|
||||
|
||||
@@ -48,17 +49,22 @@ void BeginPlay(veng::Engine& engine) {
|
||||
background->colision = false;
|
||||
background->position = {background->position.x, background->position.y, 30.f};
|
||||
background->scale *= 100;
|
||||
background->networkReplicated = false;
|
||||
|
||||
veng::Model* const background0 =
|
||||
engine.SpawnModel("background", "background0");
|
||||
background0->scale = background->scale;
|
||||
background0->networkReplicated = false;
|
||||
veng::Model* const background1 =
|
||||
engine.SpawnModel("background", "background1");
|
||||
background1->scale = background->scale;
|
||||
background1->networkReplicated = false;
|
||||
veng::Model* const background2 =
|
||||
engine.SpawnModel("background", "background2");
|
||||
background2->scale = background->scale;
|
||||
background2->networkReplicated = false;
|
||||
veng::Model* const background3 =
|
||||
engine.SpawnModel("background", "background3");
|
||||
background3->scale = background->scale;
|
||||
background3->networkReplicated = false;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "glfw/glfw_monitor.h"
|
||||
#include "glfw/glfw_window.h"
|
||||
#include "socket/iocp.h"
|
||||
#include "socket/packet.h"
|
||||
#include "socket/tcp_socket.h"
|
||||
#include "socket/udp_socket.h"
|
||||
#include "socket/wsa_manager.h"
|
||||
@@ -11,6 +12,8 @@
|
||||
#include "vulkan_engine/vulkan/engine.h"
|
||||
#include "vulkan_engine/vulkan/graphics.h"
|
||||
|
||||
std::uint8_t CLIENTID = 0;
|
||||
|
||||
std::int32_t main(std::int32_t argc, gsl::zstring* argv) {
|
||||
Network::WSAManager wsamanager;
|
||||
#if !defined(NDEBUG)
|
||||
@@ -27,43 +30,23 @@ std::int32_t main(std::int32_t argc, gsl::zstring* argv) {
|
||||
|
||||
Network::Socket sock;
|
||||
Network::TCPSocket TCPSock;
|
||||
Network::UDPSocket UDPSock;
|
||||
TCPSock.init(AF_INET6);
|
||||
UDPSock.init(AF_INET6);
|
||||
sock = TCPSock;
|
||||
if (sock.connect(addr) == INVALID_SOCKET) {
|
||||
spdlog::error("connect()");
|
||||
std::exit(EXIT_FAILURE);
|
||||
}
|
||||
iocp.registerTCPSocket(sock, 16 * 1024);
|
||||
|
||||
Network::IOCPPASSINDATA* data = new Network::IOCPPASSINDATA(16 * 1024);
|
||||
data->socket = std::make_shared<Network::Socket>(sock);
|
||||
data->IOCPInstance = &iocp;
|
||||
iocp.registerTCPSocket(data);
|
||||
|
||||
std::vector<Network::IOCPPASSINDATA*> send_data;
|
||||
data->event = Network::IOCPEVENT::WRITE;
|
||||
auto snowflake = utils::GenerateID();
|
||||
auto timestamp = std::to_string(snowflake.timestamp);
|
||||
::memcpy(
|
||||
data->wsabuf.buf, timestamp.c_str(),
|
||||
(data->bufsize < timestamp.size()) ? data->bufsize : timestamp.size());
|
||||
data->wsabuf.len = 16 * 1024;
|
||||
send_data.push_back(data);
|
||||
iocp.send(sock.sock, &send_data);
|
||||
|
||||
Network::IOCPPASSINDATA* recv_data =
|
||||
new Network::IOCPPASSINDATA(16 * 1024);
|
||||
recv_data->socket = std::make_shared<Network::Socket>(sock);
|
||||
recv_data->IOCPInstance = &iocp;
|
||||
while (!iocp.recv(recv_data)); // 어떤 데이터를 읽는걸 보장받고 싶다면 그냥
|
||||
// 스핀락 걸어버리기.
|
||||
|
||||
auto snowflake2 = utils::GenerateID();
|
||||
auto timestamp2 = std::to_string(snowflake2.timestamp);
|
||||
|
||||
spdlog::info("recv_data: {}", recv_data->wsabuf.buf);
|
||||
spdlog::info("current stamp: {}", timestamp2);
|
||||
while (iocp.GetRecvedBytes(sock.sock) < 6);
|
||||
std::vector<char> header_serialized(6);
|
||||
iocp.recv(sock, header_serialized);
|
||||
Packet::Header header;
|
||||
header.Deserialize(header_serialized);
|
||||
while (iocp.GetRecvedBytes(sock.sock) < header.body_length);
|
||||
std::vector<char> data(header.body_length);
|
||||
iocp.recv(sock, data);
|
||||
::memcpy(&CLIENTID, data.data(), 1); //id 받기
|
||||
|
||||
const veng::GlfwInitialization _glfw;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user