Quellcode durchsuchen

fixed get-or-assign (close #185)

Michele Caini vor 7 Jahren
Ursprung
Commit
8ab61637f0
2 geänderte Dateien mit 10 neuen und 1 gelöschten Zeilen
  1. 1 1
      src/entt/entity/registry.hpp
  2. 9 0
      test/entt/entity/registry.cpp

+ 1 - 1
src/entt/entity/registry.hpp

@@ -679,7 +679,7 @@ public:
     template<typename Component>
     Component & get(const entity_type entity, Component &&component) ENTT_NOEXCEPT {
         assert(valid(entity));
-        auto &cpool = pool<Component>();
+        auto &cpool = assure<Component>();
         auto *comp = cpool.try_get(entity);
 
         if(!comp) {

+ 9 - 0
test/entt/entity/registry.cpp

@@ -1108,3 +1108,12 @@ TEST(Registry, Clone) {
     ASSERT_EQ(listener.counter, 1);
     ASSERT_EQ(listener.last, e0);
 }
+
+TEST(Registry, GetOrAssign) {
+    entt::registry<> registry;
+    const auto entity = registry.create();
+    const auto value = registry.get<int>(entity, 3);
+    ASSERT_TRUE(registry.has<int>(entity));
+    ASSERT_EQ(registry.get<int>(entity), value);
+    ASSERT_EQ(registry.get<int>(entity), 3);
+}