From 8af30e159d5674c11b2ff4b2ae11f224f68fa098 Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Tue, 4 Aug 2026 16:20:16 +0800 Subject: [PATCH] fix(gameplay): use inline const for static EMPTY members Use inline const for static EMPTY members to avoid ODR and linker issues. Add missing block_manager.hpp includes in gameplay sources. --- include/Cubed/gameplay/block_manager.hpp | 2 +- include/Cubed/gameplay/item_manager.hpp | 2 +- src/gameplay/chunk_generator.cpp | 1 + src/gameplay/client_chunk.cpp | 1 + src/gameplay/client_player_manager.cpp | 2 +- src/gameplay/client_world.cpp | 1 + src/gameplay/item_manager.cpp | 1 + src/gameplay/server_world.cpp | 1 + 8 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/Cubed/gameplay/block_manager.hpp b/include/Cubed/gameplay/block_manager.hpp index 9ff4ed2..7d7609a 100644 --- a/include/Cubed/gameplay/block_manager.hpp +++ b/include/Cubed/gameplay/block_manager.hpp @@ -34,7 +34,7 @@ private: using IDMap = tbb::concurrent_hash_map; using CrossPlaneMap = tbb::concurrent_hash_map; - static const BlockData EMPTY; + static inline const BlockData EMPTY; static inline BlockMap m_datas; static inline IDMap m_id_map; diff --git a/include/Cubed/gameplay/item_manager.hpp b/include/Cubed/gameplay/item_manager.hpp index 1bf04d3..6ebc81e 100644 --- a/include/Cubed/gameplay/item_manager.hpp +++ b/include/Cubed/gameplay/item_manager.hpp @@ -34,6 +34,6 @@ private: IDMap m_id_map; BlockToIDMap m_block_to_id_map; - static constexpr ItemData EMPTY; + static inline const ItemData EMPTY; }; } // namespace Cubed \ No newline at end of file diff --git a/src/gameplay/chunk_generator.cpp b/src/gameplay/chunk_generator.cpp index 8e02706..bc80670 100644 --- a/src/gameplay/chunk_generator.cpp +++ b/src/gameplay/chunk_generator.cpp @@ -1,5 +1,6 @@ #include "Cubed/gameplay/chunk_generator.hpp" +#include "Cubed/gameplay/block_manager.hpp" #include "Cubed/gameplay/builders/desert_builder.hpp" #include "Cubed/gameplay/builders/forest_builder.hpp" #include "Cubed/gameplay/builders/mountain_builder.hpp" diff --git a/src/gameplay/client_chunk.cpp b/src/gameplay/client_chunk.cpp index 96de15c..d1308d9 100644 --- a/src/gameplay/client_chunk.cpp +++ b/src/gameplay/client_chunk.cpp @@ -1,5 +1,6 @@ #include "Cubed/gameplay/client_chunk.hpp" +#include "Cubed/gameplay/block_manager.hpp" namespace Cubed { using OptionalBlockVectorArray = std::array>, 4>; diff --git a/src/gameplay/client_player_manager.cpp b/src/gameplay/client_player_manager.cpp index 5fef776..55d2391 100644 --- a/src/gameplay/client_player_manager.cpp +++ b/src/gameplay/client_player_manager.cpp @@ -1,9 +1,9 @@ #include "Cubed/gameplay/client_player_manager.hpp" +#include "Cubed/gameplay/block_manager.hpp" #include "Cubed/gameplay/client_world.hpp" #include "Cubed/gameplay/hitbox_manager.hpp" #include "Cubed/tools/math_tools.hpp" - using namespace google::protobuf; namespace Cubed { diff --git a/src/gameplay/client_world.cpp b/src/gameplay/client_world.cpp index abfc59d..f99079f 100644 --- a/src/gameplay/client_world.cpp +++ b/src/gameplay/client_world.cpp @@ -1,6 +1,7 @@ #include "Cubed/gameplay/client_world.hpp" #include "Cubed/config.hpp" +#include "Cubed/gameplay/block_manager.hpp" #include "Cubed/gameplay/chunk_generator.hpp" #include "Cubed/gameplay/game_time.hpp" #include "Cubed/gameplay/packet.hpp" diff --git a/src/gameplay/item_manager.cpp b/src/gameplay/item_manager.cpp index 026c15c..b1191d2 100644 --- a/src/gameplay/item_manager.cpp +++ b/src/gameplay/item_manager.cpp @@ -15,6 +15,7 @@ ItemManager::ItemManager() {} ItemManager& ItemManager::instance() { static ItemManager inst; + return inst; } diff --git a/src/gameplay/server_world.cpp b/src/gameplay/server_world.cpp index 35addcf..9e93369 100644 --- a/src/gameplay/server_world.cpp +++ b/src/gameplay/server_world.cpp @@ -1,5 +1,6 @@ #include "Cubed/gameplay/server_world.hpp" +#include "Cubed/gameplay/block_manager.hpp" #include "Cubed/gameplay/packet.hpp" #include "Cubed/gameplay/session.hpp" #include "Cubed/tools/cubed_assert.hpp"