]> git.tdb.fi Git - libs/game.git/commitdiff
Add generation number to BufferedComponent
authorMikko Rasa <tdb@tdb.fi>
Sat, 15 Mar 2025 14:49:58 +0000 (16:49 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 15 Mar 2025 14:49:58 +0000 (16:49 +0200)
source/game/component.h

index e54b990b45eaa41cf7e5187aac02a9073ecec466..dbf5e17b838740513a14b40a039d17912baee080 100644 (file)
@@ -44,8 +44,10 @@ protected:
        T &write();
 
 public:
-       virtual void prepare_tick() { write_index = 1-read_index; written = false; }
+       virtual void prepare_tick() { write_index = read_index+1; written = false; }
        virtual void commit_tick() { if(written) read_index = write_index; }
+       uint8_t get_read_generation() const { return read_index; }
+       uint8_t get_write_generation() const { return write_index; }
 };
 
 template<typename T>
@@ -54,7 +56,7 @@ const T &BufferedComponent<T>::read() const
 #ifdef DEBUG
        AccessGuard::get_instance().check<AccessGuard::Read<T>>();
 #endif
-       return data[read_index];
+       return data[read_index&1];
 }
 
 template<typename T>
@@ -65,10 +67,10 @@ T &BufferedComponent<T>::write()
 #endif
        if(!written && write_index!=read_index)
        {
-               data[write_index] = data[read_index];
+               data[write_index&1] = data[read_index&1];
                written = true;
        }
-       return data[write_index];
+       return data[write_index&1];
 }
 
 } // namespace Msp::Game