#include #include #include #include struct entity_id { using entity_type = std::uint32_t; static constexpr auto null = entt::null; constexpr entity_id(entity_type value = null) noexcept : entt{value} {} constexpr entity_id(const entity_id &other) noexcept : entt{other.entt} {} constexpr operator entity_type() const noexcept { return entt; } private: entity_type entt; }; TEST(Example, CustomIdentifier) { entt::basic_registry registry{}; entity_id entity{}; ASSERT_FALSE(registry.valid(entity)); ASSERT_TRUE(entity == entt::null); entity = registry.create(); ASSERT_TRUE(registry.valid(entity)); ASSERT_TRUE(entity != entt::null); ASSERT_FALSE((registry.all_of(entity))); ASSERT_EQ(registry.try_get(entity), nullptr); registry.emplace(entity, 42); ASSERT_TRUE((registry.any_of(entity))); ASSERT_EQ(registry.get(entity), 42); registry.destroy(entity); ASSERT_FALSE(registry.valid(entity)); ASSERT_TRUE(entity != entt::null); entity = registry.create(); ASSERT_TRUE(registry.valid(entity)); ASSERT_TRUE(entity != entt::null); }