]> git.tdb.fi Git - libs/game.git/commitdiff
Always check pool relationships when a new pool is created
authorMikko Rasa <tdb@tdb.fi>
Sat, 15 Mar 2025 10:41:48 +0000 (12:41 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 15 Mar 2025 10:41:48 +0000 (12:41 +0200)
source/game/pool.cpp
source/game/pool.h

index 2a61f2d7df2c79bc6ab58ab093a30f8a5ebcd447..36b3b11dc026e549d1f9466795d89acecbcd4dd5 100644 (file)
@@ -15,10 +15,6 @@ unsigned PoolPool::get_next_id()
 
 void PoolPool::check_types()
 {
-       unsigned g = reflector.get_generation();
-       if(g==reflector_gen)
-               return;
-
        for(const auto &p: pools)
        {
                const Reflection::ClassBase *type = &p->get_reflected_type();
@@ -42,7 +38,7 @@ void PoolPool::check_types()
                        p->set_parent_pool(*parent);
        }
 
-       reflector_gen = g;
+       reflector_gen = reflector.get_generation();
 }
 
 
index 98c5229161339ce81818dfba35058953453eb379..b734852764e89c4519b9a19e789de8ffeebdba48 100644 (file)
@@ -118,9 +118,12 @@ inline Pool<T> &PoolPool::get_pool()
 
        std::unique_ptr<PoolBase> &ptr = pools[id];
        if(!ptr)
+       {
                ptr = std::make_unique<Pool<T>>(reflector);
-
-       check_types();
+               check_types();
+       }
+       else if(reflector.get_generation()!=reflector_gen)
+               check_types();
 
        return *static_cast<Pool<T> *>(ptr.get());
 }