diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.h b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.h index 662013d033..6d30eabeb8 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.h @@ -122,7 +122,7 @@ namespace Multiplayer private: AZStd::fixed_vector, SIZE> m_container; // Synchronized value for vector size, prefer using size() locally which checks m_container.size() - RewindableObject m_serializedSize; + RewindableObject m_rewindableSize; }; } diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.inl b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.inl index c48e534f4f..519431793b 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.inl +++ b/Gems/Multiplayer/Code/Include/Multiplayer/NetworkTime/RewindableFixedVector.inl @@ -17,7 +17,8 @@ namespace Multiplayer template constexpr RewindableFixedVector::RewindableFixedVector(const TYPE& initialValue, uint32_t count) { - m_container.resize(count, initialValue) + m_container.resize(count, initialValue); + m_rewindableSize = m_container.size(); } template @@ -29,8 +30,8 @@ namespace Multiplayer template constexpr bool RewindableFixedVector::Serialize(AzNetworking::ISerializer& serializer) { - m_serializedSize = m_container.size(); - if(!m_serializedSize.Serialize(serializer) && !resize(m_serializedSize)) + m_rewindableSize = m_container.size(); + if(!m_rewindableSize.Serialize(serializer) && !resize(m_rewindableSize)) { return false; } @@ -51,14 +52,14 @@ namespace Multiplayer { if (deltaRecord.GetBit(SIZE)) { - uint32_t origSize = m_serializedSize; - m_serializedSize = m_container.size(); - if(!m_serializedSize.Serialize(serializer) && !resize(m_serializedSize)) + const uint32_t origSize = m_rewindableSize; + m_rewindableSize = m_container.size(); + if(!m_rewindableSize.Serialize(serializer) && !resize(m_rewindableSize)) { return false; } - if ((serializer.GetSerializerMode() == AzNetworking::SerializerMode::WriteToObject) && origSize == m_serializedSize) + if ((serializer.GetSerializerMode() == AzNetworking::SerializerMode::WriteToObject) && origSize == m_rewindableSize) { deltaRecord.SetBit(SIZE, false); } @@ -102,7 +103,7 @@ namespace Multiplayer template constexpr RewindableFixedVector& RewindableFixedVector::operator=(const RewindableFixedVector& rhs) { - resize(RHS.size()); + resize(rhs.size()); for (uint32_t idx = 0; idx < size(); ++i) { m_container[idx] = rhs.m_container[idx]; @@ -113,7 +114,7 @@ namespace Multiplayer template constexpr bool RewindableFixedVector::operator ==(const RewindableFixedVector& rhs) const { - return m_container == rhs.m_container && m_serializedSize == rhs.m_serializedSize && size == rhs.size(); + return m_container == rhs.m_container && m_rewindableSize == rhs.m_rewindableSize; } template @@ -136,6 +137,7 @@ namespace Multiplayer } m_container.resize(count, TYPE()); + m_rewindableSize = m_container.size(); return true; } @@ -149,6 +151,7 @@ namespace Multiplayer } m_container.resize_no_construct(count); + m_rewindableSize = m_container.size(); return true; } @@ -157,6 +160,7 @@ namespace Multiplayer constexpr void RewindableFixedVector::clear() { m_container.clear(); + m_rewindableSize = m_container.size(); } template @@ -179,6 +183,7 @@ namespace Multiplayer if (size() < SIZE) { m_container.push_back(value); + m_rewindableSize = m_container.size(); return true; } @@ -191,6 +196,7 @@ namespace Multiplayer if (size() > 0) { m_container.pop_back(); + m_rewindableSize = m_container.size(); return true; } @@ -213,6 +219,6 @@ namespace Multiplayer template constexpr uint32_t RewindableFixedVector::size() const { - return m_container.size(); + return m_rewindableSize; } }