From 9187518290d9123e998ee5446625912142f78970 Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Tue, 16 Dec 2025 12:02:08 +0300 Subject: [PATCH] Use net objects in resource manager --- include/Helpers/Networking/NetServer.cpp | 2 +- include/Helpers/Networking/NetServer.hpp | 2 +- .../NetworkingObjects/NetObjManager.hpp | 17 ++- src/CanvasComponents/ImageCanvasComponent.hpp | 2 +- src/ConnectionManager.cpp | 4 - src/ConnectionManager.hpp | 1 - src/DrawingProgram/ImageEditTool.cpp | 2 +- src/ResourceManager.cpp | 144 +++++++++--------- src/ResourceManager.hpp | 40 ++--- src/Server/ClientData.hpp | 4 - src/Server/MainServer.cpp | 46 +----- src/Server/ServerData.hpp | 1 - src/World.cpp | 22 +-- src/World.hpp | 5 - 14 files changed, 113 insertions(+), 179 deletions(-) diff --git a/include/Helpers/Networking/NetServer.cpp b/include/Helpers/Networking/NetServer.cpp index 4dfab29..0f8a2df 100644 --- a/include/Helpers/Networking/NetServer.cpp +++ b/include/Helpers/Networking/NetServer.cpp @@ -268,7 +268,7 @@ void NetServer::add_disconnect_callback(const NetServerDisconnectCallback& callb disconnectCallback = callback; } -const std::vector> NetServer::get_client_list() const { +const std::vector>& NetServer::get_client_list() const { return clients; } diff --git a/include/Helpers/Networking/NetServer.hpp b/include/Helpers/Networking/NetServer.hpp index 010f968..7a259e1 100644 --- a/include/Helpers/Networking/NetServer.hpp +++ b/include/Helpers/Networking/NetServer.hpp @@ -85,7 +85,7 @@ class NetServer : public std::enable_shared_from_this { void add_recv_callback(MessageCommandType commandID, const NetServerRecvCallback& callback); void add_disconnect_callback(const NetServerDisconnectCallback& callback); - const std::vector> get_client_list() const; + const std::vector>& get_client_list() const; private: void parse_received_messages(); diff --git a/include/Helpers/NetworkingObjects/NetObjManager.hpp b/include/Helpers/NetworkingObjects/NetObjManager.hpp index 86ba289..4b81f34 100644 --- a/include/Helpers/NetworkingObjects/NetObjManager.hpp +++ b/include/Helpers/NetworkingObjects/NetObjManager.hpp @@ -42,6 +42,15 @@ namespace NetworkingObjects { return NetObjTemporaryPtr(); return NetObjTemporaryPtr(this, id, std::static_pointer_cast(it->second.p)); } + + // NOTE: DO NOT USE THESE FUNCTIONS UNLESS SITUATION ISN'T NORMAL, EVERY OBJECT SHOULD HAVE A UNIQUE ID AND IDS SHOULDNT BE REUSED UNDER ANY CIRCUMSTANCES + template NetObjOwnerPtr make_obj_with_specific_id(const NetObjID& id) { + return emplace_raw_ptr(id, static_cast(typeList.get_type_index_data(isServer).allocatorFunc())); + } + template NetObjOwnerPtr make_obj_direct_with_specific_id(const NetObjID& id, Args&&... items) { + return emplace_raw_ptr(id, new T(items...)); + } + template NetObjOwnerPtr make_obj() { return emplace_raw_ptr(NetObjID::random_gen(), static_cast(typeList.get_type_index_data(isServer).allocatorFunc())); } @@ -52,12 +61,18 @@ namespace NetworkingObjects { template NetObjOwnerPtr make_obj_from_ptr(T* p) { return emplace_raw_ptr(NetObjID::random_gen(), p); } - template NetObjOwnerPtr get_obj_ref_from_id(NetObjID id) { + template NetObjOwnerPtr get_obj_from_id(NetObjID id) { auto it = objectData.find(id); if(it == objectData.end()) throw std::runtime_error("[NetObjManager::get_obj_from_id] ID doesn't exist"); return NetObjOwnerPtr(this, id, static_cast(it->second.p)); } + template NetObjTemporaryPtr get_obj_temporary_ref_from_id(NetObjID id) { + auto it = objectData.find(id); + if(it == objectData.end()) + return NetObjTemporaryPtr(); + return NetObjTemporaryPtr(this, id, static_cast(it->second.p)); + } template void register_class(const NetObjManagerTypeList::ServerClientClassFunctions& funcs) { typeList.register_class(funcs); } diff --git a/src/CanvasComponents/ImageCanvasComponent.hpp b/src/CanvasComponents/ImageCanvasComponent.hpp index bb53901..197200a 100644 --- a/src/CanvasComponents/ImageCanvasComponent.hpp +++ b/src/CanvasComponents/ImageCanvasComponent.hpp @@ -20,7 +20,7 @@ class ImageCanvasComponent : public CanvasComponent { Vector2f p1; Vector2f p2; - ServerClientID imageID; + NetworkingObjects::NetObjID imageID; } d; private: diff --git a/src/ConnectionManager.cpp b/src/ConnectionManager.cpp index 10d6d74..932ec1e 100644 --- a/src/ConnectionManager.cpp +++ b/src/ConnectionManager.cpp @@ -52,10 +52,6 @@ bool ConnectionManager::client_exists() { return client != nullptr; } -std::unordered_map ConnectionManager::server_get_resource_retrieval_progress() { - return localServer->resource_download_progress(); -} - NetLibrary::DownloadProgress ConnectionManager::client_get_resource_retrieval_progress() { return client->get_progress_into_fragmented_message(RESOURCE_COMMAND_CHANNEL); } diff --git a/src/ConnectionManager.hpp b/src/ConnectionManager.hpp index bdb2d59..7261932 100644 --- a/src/ConnectionManager.hpp +++ b/src/ConnectionManager.hpp @@ -16,7 +16,6 @@ class ConnectionManager { bool is_host_disconnected(); bool host_exists(); bool client_exists(); - std::unordered_map server_get_resource_retrieval_progress(); NetLibrary::DownloadProgress client_get_resource_retrieval_progress(); std::unique_ptr localServer; private: diff --git a/src/DrawingProgram/ImageEditTool.cpp b/src/DrawingProgram/ImageEditTool.cpp index bb479a8..86bb01d 100644 --- a/src/DrawingProgram/ImageEditTool.cpp +++ b/src/DrawingProgram/ImageEditTool.cpp @@ -31,7 +31,7 @@ bool ImageEditTool::edit_gui(const CanvasComponentContainer::ObjInfoSharedPtr& c Toolbar& t = drawP.world.main.toolbar; t.gui.push_id("edit tool image"); t.gui.text_label_centered("File Properties"); - std::optional resourceData = drawP.world.rMan.get_resource(a.d.imageID); + auto resourceData = drawP.world.netObjMan.get_obj_temporary_ref_from_id(a.d.imageID); if(resourceData) { t.gui.text_label("Name: " + resourceData->name); diff --git a/src/ResourceManager.cpp b/src/ResourceManager.cpp index d2100c9..8fecc08 100644 --- a/src/ResourceManager.cpp +++ b/src/ResourceManager.cpp @@ -1,71 +1,90 @@ #include "ResourceManager.hpp" -#include "Helpers/Networking/NetLibrary.hpp" +#include #include +#include #include "ResourceDisplay/SvgResourceDisplay.hpp" #include "Server/CommandList.hpp" #include "ResourceDisplay/ImageResourceDisplay.hpp" #include "ResourceDisplay/FileResourceDisplay.hpp" #include #include -#include -#include #include #include "World.hpp" #include "ResourceDisplay/FileResourceDisplay.hpp" +#include ResourceManager::ResourceManager(World& initWorld): world(initWorld) {} void ResourceManager::init_client_callbacks() { - world.con.client_add_recv_callback(CLIENT_NEW_RESOURCE_ID, [&](cereal::PortableBinaryInputArchive& message) { - message(resourceBeingRetrievedClient); + world.con.client_add_recv_callback(SERVER_NEW_RESOURCE_ID, [&](cereal::PortableBinaryInputArchive& message) { + NetworkingObjects::NetObjID idBeingRetrieved; + message(idBeingRetrieved); + resourcesBeingRetrieved.emplace(idBeingRetrieved, 0); }); - world.con.client_add_recv_callback(CLIENT_NEW_RESOURCE_DATA, [&](cereal::PortableBinaryInputArchive& message) { - message(resources[resourceBeingRetrievedClient]); - Logger::get().log("INFO", "Received new resource with id: " + std::to_string(resourceBeingRetrievedClient.first) + " " + std::to_string(resourceBeingRetrievedClient.second) + " of size " + std::to_string(resources[resourceBeingRetrievedClient].data->size())); - resourceBeingRetrievedClient = {0, 0}; + world.con.client_add_recv_callback(SERVER_NEW_RESOURCE_DATA, [&](cereal::PortableBinaryInputArchive& message) { + ResourceData newResource; + message(newResource); + resourceList.emplace_back(world.netObjMan.make_obj_direct_with_specific_id(resourcesBeingRetrieved.begin()->first, newResource)); + resourcesBeingRetrieved.clear(); }); } -float ResourceManager::get_resource_retrieval_progress(const ServerClientID& id) { - if(id == ServerClientID{0, 0}) +void ResourceManager::init_server_callbacks() { + world.con.localServer->netServer->add_recv_callback(CLIENT_NEW_RESOURCE_ID, [&](std::shared_ptr client, cereal::PortableBinaryInputArchive& message) { + NetworkingObjects::NetObjID idBeingRetrieved; + message(idBeingRetrieved); + resourcesBeingRetrieved.emplace(idBeingRetrieved, client->customID); + }); + world.con.localServer->netServer->add_recv_callback(CLIENT_NEW_RESOURCE_DATA, [&](std::shared_ptr client, cereal::PortableBinaryInputArchive& message) { + ResourceData newResource; + message(newResource); + auto it = std::find_if(resourcesBeingRetrieved.begin(), resourcesBeingRetrieved.end(), [&client](auto& p) { + return p.second == client->customID; + }); + resourceList.emplace_back(world.netObjMan.make_obj_direct_with_specific_id(it->first, newResource)); + world.con.localServer->netServer->send_items_to_all_clients_except(client, RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_ID, resourceList.back().get_net_id()); + world.con.localServer->netServer->send_items_to_all_clients_except(client, RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_DATA, newResource); + resourcesBeingRetrieved.erase(resourceList.back().get_net_id()); + }); +} + +float ResourceManager::get_resource_retrieval_progress(const NetworkingObjects::NetObjID& id) { + auto resourceClientID = resourcesBeingRetrieved.find(id); + if(resourceClientID == resourcesBeingRetrieved.end()) return 0.0f; - if(world.con.host_exists() && !world.con.is_host_disconnected()) { - auto it = serverDownloadProgress.find(id); - if(it == serverDownloadProgress.end()) + if(world.con.localServer) { + uint64_t clientIDToLookFor = resourceClientID->second; + + const std::vector>& clientListInNetServer = world.con.localServer->netServer->get_client_list(); + auto netClientIt = std::find_if(clientListInNetServer.begin(), clientListInNetServer.end(), [&clientIDToLookFor](auto& nC) { + return nC->customID == clientIDToLookFor; + }); + if(netClientIt == clientListInNetServer.end()) { + resourcesBeingRetrieved.erase(resourceClientID); // Client disconnected, remove it from the list return 0.0f; - else { - auto& progressBytes = it->second; - if(progressBytes.totalBytes == 0) - return 0.0f; - return static_cast(progressBytes.downloadedBytes) / static_cast(progressBytes.totalBytes); } + auto progressBytes = (*netClientIt)->get_progress_into_fragmented_message(RESOURCE_COMMAND_CHANNEL); + if(progressBytes.totalBytes == 0) + return 0.0f; + return static_cast(progressBytes.downloadedBytes) / static_cast(progressBytes.totalBytes); } else if(world.con.client_exists() && !world.con.is_client_disconnected()) { - if(id != resourceBeingRetrievedClient) + NetLibrary::DownloadProgress progressBytes = world.con.client_get_resource_retrieval_progress(); + if(progressBytes.totalBytes == 0) return 0.0f; - else { - NetLibrary::DownloadProgress progressBytes = world.con.client_get_resource_retrieval_progress(); - if(progressBytes.totalBytes == 0) - return 0.0f; - return static_cast(progressBytes.downloadedBytes) / static_cast(progressBytes.totalBytes); - } + return static_cast(progressBytes.downloadedBytes) / static_cast(progressBytes.totalBytes); } return 0.0f; } void ResourceManager::update() { - if(!world.con.host_exists() || world.con.is_host_disconnected()) - serverDownloadProgress.clear(); - else - serverDownloadProgress = world.con.server_get_resource_retrieval_progress(); - for(auto& [k, v] : displays) v->update(world); } -ServerClientID ResourceManager::add_resource_file(const std::filesystem::path& filePath) { +NetworkingObjects::NetObjID ResourceManager::add_resource_file(const std::filesystem::path& filePath) { // https://nullptr.org/cpp-read-file-into-string/ std::ifstream file(filePath, std::ios::in | std::ios::binary | std::ios::ate); if(!file.is_open()) { @@ -102,72 +121,53 @@ ServerClientID ResourceManager::add_resource_file(const std::filesystem::path& f return add_resource(resource); } -ServerClientID ResourceManager::add_resource(const ResourceData& resource) { - auto it = std::find_if(resources.begin(), resources.end(), [&](const auto& p) { - return p.second.data == resource.data || (*p.second.data) == (*resource.data); +NetworkingObjects::NetObjID ResourceManager::add_resource(const ResourceData& resource) { + auto it = std::find_if(resourceList.begin(), resourceList.end(), [&](const auto& p) { + return p->data == resource.data || (*p->data) == (*resource.data); }); - if(it != resources.end()) { + if(it != resourceList.end()) { Logger::get().log("INFO", "[ResourceManager::add_resource] File " + std::string(resource.name) + " is a duplicate"); - return it->first; + return it->get_net_id(); } - ServerClientID newID = world.get_new_id(); - resources[newID] = resource; - world.con.client_send_items_to_server(RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_ID, newID); - world.con.client_send_items_to_server(RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_DATA, resource); - return newID; -} - -void ResourceManager::copy_resource_set_to_map(const std::unordered_set& resourceSet, std::unordered_map& resourceMap) const { - resourceMap.clear(); - for(auto& [k, v] : resources) { - if(resourceSet.contains(k)) - resourceMap[k] = v; + auto& resourceInsert = resourceList.emplace_back(world.netObjMan.make_obj_direct(resource)); + if(world.con.localServer) { + world.con.localServer->netServer->send_items_to_all_clients(RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_ID, resourceInsert.get_net_id()); + world.con.localServer->netServer->send_items_to_all_clients(RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_DATA, resource); } -} - -ClientPortionID ResourceManager::get_max_id(ServerPortionID serverID) const { - ClientPortionID maxClientID = 0; - for(auto& p : resources) { - if(p.first.first == serverID) - maxClientID = std::max(maxClientID, p.first.second); + else { + world.con.client_send_items_to_server(RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_ID, resourceInsert.get_net_id()); + world.con.client_send_items_to_server(RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_DATA, resource); } - return maxClientID; + return resourceInsert.get_net_id(); } -std::optional ResourceManager::get_resource(const ServerClientID& id) const { - auto it = resources.find(id); - if(it == resources.end()) - return std::nullopt; - return it->second; -} - -ResourceDisplay* ResourceManager::get_display_data(const ServerClientID& fileID) { +ResourceDisplay* ResourceManager::get_display_data(const NetworkingObjects::NetObjID& fileID) { auto loadedDisplayIt = displays.find(fileID); if(loadedDisplayIt != displays.end()) return loadedDisplayIt->second.get(); - auto resourceIt = resources.find(fileID); - if(resourceIt == resources.end()) + NetworkingObjects::NetObjTemporaryPtr resourceData = world.netObjMan.get_obj_temporary_ref_from_id(fileID); + if(resourceData == NetworkingObjects::NetObjTemporaryPtr()) return nullptr; auto imgResource(std::make_unique()); - if(imgResource->load(*this, resourceIt->second.name, *resourceIt->second.data)) { + if(imgResource->load(*this, resourceData->name, *resourceData->data)) { displays.emplace(fileID, std::move(imgResource)); return displays[fileID].get(); } auto svgResource(std::make_unique()); - if(svgResource->load(*this, resourceIt->second.name, *resourceIt->second.data)) { + if(svgResource->load(*this, resourceData->name, *resourceData->data)) { displays.emplace(fileID, std::move(svgResource)); return displays[fileID].get(); } auto fileResource(std::make_unique()); - fileResource->load(*this, resourceIt->second.name, *resourceIt->second.data); + fileResource->load(*this, resourceData->name, *resourceData->data); displays.emplace(fileID, std::move(fileResource)); return displays[fileID].get(); } -const std::unordered_map& ResourceManager::resource_list() { - return resources; +const std::vector>& ResourceManager::resource_list() { + return resourceList; } diff --git a/src/ResourceManager.hpp b/src/ResourceManager.hpp index 4b05459..56a4d78 100644 --- a/src/ResourceManager.hpp +++ b/src/ResourceManager.hpp @@ -1,13 +1,10 @@ #pragma once -#include "SharedTypes.hpp" +#include #include -#include +#include "Helpers/NetworkingObjects/NetObjID.hpp" #include "ResourceDisplay/ResourceDisplay.hpp" -#include -#include -#include -#include #include +#include class World; @@ -26,34 +23,21 @@ struct ResourceData { class ResourceManager { public: ResourceManager(World& initWorld); - template void serialize(Archive& a) { - a(resources); - } - template void save_strip_unused_resources(Archive& a, const std::unordered_set& usedResources) const { - std::unordered_map strippedResources = resources; - std::erase_if(strippedResources, [&](const auto& p) { - return !usedResources.contains(p.first); - }); - a(strippedResources); - } void update(); - void copy_resource_set_to_map(const std::unordered_set& resourceSet, std::unordered_map& resourceMap) const; void init_client_callbacks(); - ServerClientID add_resource_file(const std::filesystem::path& filePath); - ServerClientID add_resource(const ResourceData& resource); - ResourceDisplay* get_display_data(const ServerClientID& fileID); - std::optional get_resource(const ServerClientID& id) const; - ClientPortionID get_max_id(ServerPortionID serverID) const; - const std::unordered_map& resource_list(); - float get_resource_retrieval_progress(const ServerClientID& id); + void init_server_callbacks(); + NetworkingObjects::NetObjID add_resource_file(const std::filesystem::path& filePath); + NetworkingObjects::NetObjID add_resource(const ResourceData& resource); + ResourceDisplay* get_display_data(const NetworkingObjects::NetObjID& fileID); + const std::vector>& resource_list(); + float get_resource_retrieval_progress(const NetworkingObjects::NetObjID& id); World& world; private: - std::unordered_map serverDownloadProgress; - ServerClientID resourceBeingRetrievedClient = {0, 0}; + std::unordered_map> displays; - std::unordered_map resources; - std::unordered_map> displays; + std::unordered_map resourcesBeingRetrieved; + std::vector> resourceList; static std::array decoders; }; diff --git a/src/Server/ClientData.hpp b/src/Server/ClientData.hpp index 2f0f61c..633f9cd 100644 --- a/src/Server/ClientData.hpp +++ b/src/Server/ClientData.hpp @@ -6,8 +6,6 @@ #include #include -class MainServer; - class ClientData { public: CoordSpaceHelper camCoords; @@ -20,8 +18,6 @@ class ClientData { uint64_t canvasScale = 0; - ServerClientID pendingResourceID = {0, 0}; - template void serialize(Archive& a) { a(camCoords, windowSize, cursorPos, cursorColor, displayName); } diff --git a/src/Server/MainServer.cpp b/src/Server/MainServer.cpp index b1f23c5..ef3f9ee 100644 --- a/src/Server/MainServer.cpp +++ b/src/Server/MainServer.cpp @@ -22,7 +22,6 @@ MainServer::MainServer(World& initWorld, const std::string& serverLocalID): world(initWorld) { data.canvasScale = world.canvasScale; - data.resources = world.rMan.resource_list(); data.canvasBackColor = convert_vec3(world.canvasTheme.backColor); lastKeepAliveSent = std::chrono::steady_clock::now(); @@ -69,9 +68,9 @@ MainServer::MainServer(World& initWorld, const std::string& serverLocalID): world.drawProg.write_components_server(a); } netServer->send_string_stream_to_client(client, RELIABLE_COMMAND_CHANNEL, ss); - for(auto& [id, rData] : data.resources) { - netServer->send_items_to_client(client, RESOURCE_COMMAND_CHANNEL, CLIENT_NEW_RESOURCE_ID, id); - netServer->send_items_to_client(client, RESOURCE_COMMAND_CHANNEL, CLIENT_NEW_RESOURCE_DATA, rData); + for(auto& r : world.rMan.resource_list()) { + netServer->send_items_to_client(client, RESOURCE_COMMAND_CHANNEL, CLIENT_NEW_RESOURCE_ID, r.get_net_id()); + netServer->send_items_to_client(client, RESOURCE_COMMAND_CHANNEL, CLIENT_NEW_RESOURCE_DATA, *r); } } clients.emplace(newClient.serverID, newClient); @@ -89,23 +88,6 @@ MainServer::MainServer(World& initWorld, const std::string& serverLocalID): message(c.cursorPos); netServer->send_items_to_all_clients_except(client, UNRELIABLE_COMMAND_CHANNEL, CLIENT_MOVE_SCREEN_MOUSE, c.serverID, c.cursorPos); }); - netServer->add_recv_callback(SERVER_NEW_RESOURCE_ID, [&](std::shared_ptr client, cereal::PortableBinaryInputArchive& message) { - auto& c = clients[client->customID]; - message(c.pendingResourceID); - if(c.pendingResourceID == ServerClientID{0, 0}) - throw std::runtime_error("[MainServer::MainServer] Received a null resource ID"); - }); - netServer->add_recv_callback(SERVER_NEW_RESOURCE_DATA, [&](std::shared_ptr client, cereal::PortableBinaryInputArchive& message) { - ResourceData resourceData; - message(resourceData); - auto& c = clients[client->customID]; - if(c.pendingResourceID == ServerClientID{0, 0}) - throw std::runtime_error("[MainServer::MainServer] Received data for a null resource ID"); - netServer->send_items_to_all_clients_except(client, RESOURCE_COMMAND_CHANNEL, CLIENT_NEW_RESOURCE_ID, c.pendingResourceID); - netServer->send_items_to_all_clients_except(client, RESOURCE_COMMAND_CHANNEL, CLIENT_NEW_RESOURCE_DATA, resourceData); - data.resources.emplace(c.pendingResourceID, resourceData); - c.pendingResourceID = ServerClientID{0, 0}; - }); netServer->add_recv_callback(SERVER_CHAT_MESSAGE, [&](std::shared_ptr client, cereal::PortableBinaryInputArchive& message) { std::string chatMessage; message(chatMessage); @@ -182,28 +164,6 @@ void MainServer::update() { } } -std::unordered_map MainServer::resource_download_progress() { - std::unordered_map toRet; - - if(!netServer) - return toRet; - - for(auto& [serverID, c] : clients) { - if(c.pendingResourceID != ServerClientID{0, 0}) { - const std::vector>& clientListInNetServer = netServer->get_client_list(); - auto netClientIt = std::find_if(clientListInNetServer.begin(), clientListInNetServer.end(), [&serverID](auto& nC) { - return nC->customID == serverID; - }); - if(netClientIt != clientListInNetServer.end()) { - auto& netClient = *netClientIt; - toRet.emplace(c.pendingResourceID, netClient->get_progress_into_fragmented_message(RESOURCE_COMMAND_CHANNEL)); - } - } - } - - return toRet; -} - MainServer::~MainServer() { //netServer->close_server(); } diff --git a/src/Server/ServerData.hpp b/src/Server/ServerData.hpp index 7594023..1d4066a 100644 --- a/src/Server/ServerData.hpp +++ b/src/Server/ServerData.hpp @@ -8,7 +8,6 @@ class DrawComponent; class ServerData { public: - std::unordered_map resources; uint64_t canvasScale = 0; Vector3f canvasBackColor; diff --git a/src/World.cpp b/src/World.cpp index 1caae80..18b41f6 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "Server/CommandList.hpp" #include "MainProgram.hpp" #include "SharedTypes.hpp" @@ -98,7 +99,11 @@ void World::init_client_callbacks() { std::string fileDisplayName; CoordSpaceHelper camCoordsToMoveTo; Vector2f windowSizeToMoveTo; - message(displayName, camCoordsToMoveTo, windowSizeToMoveTo, fileDisplayName, clients); + message(displayName); + message(camCoordsToMoveTo); + message(windowSizeToMoveTo); + message(fileDisplayName); + message(clients); set_name(fileDisplayName); drawData.cam.smooth_move_to(*main.world, camCoordsToMoveTo, windowSizeToMoveTo, true); Vector3f newBackColor; @@ -109,7 +114,6 @@ void World::init_client_callbacks() { gridMan.grids = netObjMan.read_create_message>(message, nullptr); drawProg.read_components_client(message); } - nextClientID = get_max_id(ownID); clientStillConnecting = false; }); con.client_add_recv_callback(CLIENT_USER_CONNECT, [&](cereal::PortableBinaryInputArchive& message) { @@ -269,11 +273,6 @@ void World::add_chat_message(const std::string& name, const std::string& message chatMessages.pop_back(); } -ServerClientID World::get_new_id() { - nextClientID++; - return {ownID, nextClientID}; -} - WorldVec World::get_mouse_world_pos() { return mousePreviousWorldVec; } @@ -385,23 +384,15 @@ void World::load_from_file(const std::filesystem::path& filePathToLoadFrom, std: cereal::PortableBinaryInputArchive a(f); load_file(a, fileVersion); - nextClientID = get_max_id(ownID); Logger::get().log("USERINFO", "File loaded"); set_name(filePath.stem().string()); } -ClientPortionID World::get_max_id(ServerPortionID serverID) { - return rMan.get_max_id(serverID); -} - void World::save_file(cereal::PortableBinaryOutputArchive& a) const { a(drawData.cam.c, main.window.size.cast().eval()); a(convert_vec3(canvasTheme.backColor)); drawProg.save_file(a); - //a(bMan); - //a(gridMan); - rMan.save_strip_unused_resources(a, drawProg.get_used_resources()); } void World::load_file(cereal::PortableBinaryInputArchive& a, VersionNumber version) { @@ -426,7 +417,6 @@ void World::load_file(cereal::PortableBinaryInputArchive& a, VersionNumber versi //a(bMan); //if(version >= VersionNumber(0, 2, 0)) // a(gridMan); - a(rMan); } WorldScalar World::calculate_zoom_from_uniform_zoom(WorldScalar uniformZoom, WorldVec oldWindowSize) { diff --git a/src/World.hpp b/src/World.hpp index 7a1d24b..5594f76 100644 --- a/src/World.hpp +++ b/src/World.hpp @@ -68,8 +68,6 @@ class World { WorldScalar calculate_zoom_from_uniform_zoom(WorldScalar uniformZoom, WorldVec oldWindowSize); - ServerClientID get_new_id(); - void focus_update(); void unfocus_update(); @@ -111,8 +109,6 @@ class World { private: void init_net_obj_type_list(); - ClientPortionID get_max_id(ServerPortionID serverID); - void init_client_callbacks(); void set_name(const std::string& n); @@ -126,7 +122,6 @@ class World { }; std::optional sentCameraData; - ClientPortionID nextClientID = 0; WorldVec mousePreviousWorldVec = {0, 0}; WorldVec mouseWorldMove = {0, 0}; };