diff --git a/src/entt/entity/observer.hpp b/src/entt/entity/observer.hpp index 517a539ff..faf08b607 100644 --- a/src/entt/entity/observer.hpp +++ b/src/entt/entity/observer.hpp @@ -180,7 +180,7 @@ class basic_observer { template static void maybe_valid_if(basic_observer &obs, basic_registry ®, const Entity entt) { if(reg.template has(entt) && !reg.template any(entt)) { - if(auto *comp = obs.view.try_get(entt); !comp) { + if(!obs.view.contains(entt)) { obs.view.emplace(entt); } @@ -190,7 +190,7 @@ class basic_observer { template static void discard_if(basic_observer &obs, basic_registry &, const Entity entt) { - if(auto *value = obs.view.try_get(entt); value && !(*value &= (~(1 << Index)))) { + if(obs.view.contains(entt) && !(obs.view.get(entt) &= (~(1 << Index)))) { obs.view.remove(entt); } } @@ -223,7 +223,7 @@ class basic_observer { } }()) { - if(auto *comp = obs.view.try_get(entt); !comp) { + if(!obs.view.contains(entt)) { obs.view.emplace(entt); } @@ -233,7 +233,7 @@ class basic_observer { template static void discard_if(basic_observer &obs, basic_registry &, const Entity entt) { - if(auto *value = obs.view.try_get(entt); value && !(*value &= (~(1 << Index)))) { + if(obs.view.contains(entt) && !(obs.view.get(entt) &= (~(1 << Index)))) { obs.view.remove(entt); } } diff --git a/src/entt/entity/registry.hpp b/src/entt/entity/registry.hpp index 838a8b8bf..96cf34015 100644 --- a/src/entt/entity/registry.hpp +++ b/src/entt/entity/registry.hpp @@ -876,7 +876,8 @@ public: ENTT_ASSERT(valid(entity)); if constexpr(sizeof...(Component) == 1) { - return (assure().try_get(entity), ...); + auto &cpool = assure(); + return cpool.contains(entity) ? &cpool.get(entity) : nullptr; } else { return std::make_tuple(try_get(entity)...); } @@ -888,7 +889,8 @@ public: ENTT_ASSERT(valid(entity)); if constexpr(sizeof...(Component) == 1) { - return (assure().try_get(entity), ...); + auto &cpool = assure(); + return cpool.contains(entity) ? &cpool.get(entity) : nullptr; } else { return std::make_tuple(try_get(entity)...); } diff --git a/src/entt/entity/storage.hpp b/src/entt/entity/storage.hpp index 68df90114..11d6f8527 100644 --- a/src/entt/entity/storage.hpp +++ b/src/entt/entity/storage.hpp @@ -339,20 +339,6 @@ public: return const_cast(std::as_const(*this).get(entt)); } - /** - * @brief Returns a pointer to the object associated with an entity, if any. - * @param entt A valid entity identifier. - * @return The object associated with the entity, if any. - */ - [[nodiscard]] const value_type * try_get(const entity_type entt) const { - return underlying_type::contains(entt) ? (instances.data() + underlying_type::index(entt)) : nullptr; - } - - /*! @copydoc try_get */ - [[nodiscard]] value_type * try_get(const entity_type entt) { - return const_cast(std::as_const(*this).try_get(entt)); - } - /** * @brief Assigns an entity to a storage and constructs its object. * diff --git a/test/entt/entity/storage.cpp b/test/entt/entity/storage.cpp index 1066801fd..ff5fc958e 100644 --- a/test/entt/entity/storage.cpp +++ b/test/entt/entity/storage.cpp @@ -46,8 +46,6 @@ TEST(Storage, Functionalities) { ASSERT_FALSE(pool.contains(entt::entity{0})); ASSERT_TRUE(pool.contains(entt::entity{41})); ASSERT_EQ(pool.get(entt::entity{41}), 3); - ASSERT_EQ(*pool.try_get(entt::entity{41}), 3); - ASSERT_EQ(pool.try_get(entt::entity{99}), nullptr); pool.remove(entt::entity{41}); @@ -61,8 +59,6 @@ TEST(Storage, Functionalities) { pool.emplace(entt::entity{41}, 12); ASSERT_EQ(pool.get(entt::entity{41}), 12); - ASSERT_EQ(*pool.try_get(entt::entity{41}), 12); - ASSERT_EQ(pool.try_get(entt::entity{99}), nullptr); pool.clear();