@@ -170,7 +170,14 @@ void GameServer::InitSessionFactory(int workerId, ProcessPool* processPool, Game
170170 game_logic.OnAuthentication (authData);
171171 break ;
172172 }
173- case BinaryProtocol::MESSAGE_TYPE_CHUNK_REQUEST: {
173+ case BinaryProtocol::MESSAGE_TYPE_CHUNK_PARAMS: {
174+ BinaryProtocol::BinaryReader reader (data.data (), data.size ());
175+ ChunkParams req;
176+ req.session_id = session->GetSessionId ();
177+ game_logic.OnChunkParams (req);
178+ break ;
179+ }
180+ case BinaryProtocol::MESSAGE_TYPE_CHUNK_DATA: {
174181 BinaryProtocol::BinaryReader reader (data.data (), data.size ());
175182 ChunkData req;
176183 req.x = reader.ReadInt32 ();
@@ -180,7 +187,7 @@ void GameServer::InitSessionFactory(int workerId, ProcessPool* processPool, Game
180187 req.player_y = reader.ReadFloat ();
181188 req.player_z = reader.ReadFloat ();
182189 req.session_id = session->GetSessionId ();
183- game_logic.OnChunkRequest (req);
190+ game_logic.OnChunkData (req);
184191 break ;
185192 }
186193 case BinaryProtocol::MESSAGE_TYPE_COLLISION_CHECK: {
@@ -302,6 +309,11 @@ void GameServer::InitSessionFactory(int workerId, ProcessPool* processPool, Game
302309 authData.session_id = session->GetSessionId ();
303310 game_logic.OnAuthentication (authData);
304311 }
312+ else if (msgType == " chunk_params" ) {
313+ ChunkParams req;
314+ req.session_id = session->GetSessionId ();
315+ game_logic.OnChunkParams (req);
316+ }
305317 else if (msgType == " get_chunk" ) {
306318 ChunkData req;
307319 req.x = msg.value (" x" , 0 );
@@ -311,7 +323,7 @@ void GameServer::InitSessionFactory(int workerId, ProcessPool* processPool, Game
311323 req.player_y = msg.value (" player_y" , 0 .0f );
312324 req.player_z = msg.value (" player_z" , 0 .0f );
313325 req.session_id = session->GetSessionId ();
314- game_logic.OnChunkRequest (req);
326+ game_logic.OnChunkData (req);
315327 }
316328 else if (msgType == " collision" ) {
317329 CollisionData req;
@@ -507,11 +519,21 @@ void GameServer::RegisterCallbacks(const std::string& protocol, GameLogic& game_
507519 session->Send (BinaryProtocol::MESSAGE_TYPE_AUTHENTICATION, writer.GetBuffer ());
508520 }
509521 });
522+ game_logic.SetSendChunkParamsCallback ([&](uint64_t session_id, const ChunkParams& data) {
523+ BinaryProtocol::BinaryWriter writer;
524+ writer.WriteUInt32 (static_cast <uint32_t >(data.size ));
525+ writer.WriteFloat (data.spacing );
526+ auto session = ConnectionManager::GetInstance ().GetSession (session_id);
527+ if (session) {
528+ session->Send (BinaryProtocol::MESSAGE_TYPE_CHUNK_PARAMS, writer.GetBuffer ());
529+ }
530+ });
510531 game_logic.SetSendChunkCallback ([&](uint64_t session_id, const ChunkData& data) {
511532 BinaryProtocol::BinaryWriter writer;
512533 writer.WriteInt32 (data.x );
513534 writer.WriteInt32 (data.z );
514535 writer.WriteInt32 (data.size );
536+ writer.WriteFloat (data.spacing );
515537 uint32_t vertexDataSize = static_cast <uint32_t >(data.vertices .size () * sizeof (float ));
516538 writer.WriteUInt32 (vertexDataSize);
517539 writer.WriteBytes (reinterpret_cast <const uint8_t *>(data.vertices .data ()), vertexDataSize);
@@ -671,6 +693,18 @@ void GameServer::RegisterCallbacks(const std::string& protocol, GameLogic& game_
671693 session->SendJson (response);
672694 }
673695 });
696+ game_logic.SetSendChunkParamsCallback ([&](uint64_t session_id, const ChunkParams& data) {
697+ nlohmann::json msg = {
698+ {" msg" , " chunk_params" },
699+ {" size" , data.size },
700+ {" spacing" , data.spacing },
701+ {" timestamp" , data.timestamp }
702+ };
703+ auto session = ConnectionManager::GetInstance ().GetSession (session_id);
704+ if (session) {
705+ session->SendJson (msg);
706+ }
707+ });
674708 game_logic.SetSendChunkCallback ([&](uint64_t session_id, const ChunkData& data) {
675709 nlohmann::json msg = {
676710 {" msg" , " get_chunk" },
0 commit comments