diff options
Diffstat (limited to 'src/world.hpp')
-rw-r--r-- | src/world.hpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/world.hpp b/src/world.hpp index 88927166..6bb85a18 100644 --- a/src/world.hpp +++ b/src/world.hpp @@ -43,7 +43,6 @@ private: explicit world(size_t capacity); - void do_make_object(const std::shared_ptr<object>& e, global_coords pos, bool sorted); void do_kill_object(object_id id); std::shared_ptr<object> find_object_(object_id id); [[noreturn]] static void throw_on_wrong_object_type(object_id id, object_type actual, object_type expected); @@ -86,6 +85,12 @@ public: do_make_object(static_pointer_cast<object>(ret), pos, sorted); return ret; } + void do_make_object(const std::shared_ptr<object>& e, global_coords pos, bool sorted); + + template<typename T, typename... Xs> std::shared_ptr<object> make_unconnected_object(Xs&&... xs) + { + return std::shared_ptr<T>(new T{0, operator[](chunk_coords_{}), {}, Utility::forward<Xs>(xs)...}); + } template<typename T = object> std::shared_ptr<T> find_object(object_id id); |