Core/Animation: Fix RemoveSequence not shifting indices and deleting name

This commit is contained in:
SirLynix 2024-02-19 10:59:47 +01:00
parent 62a165126e
commit d9ad489820
2 changed files with 11 additions and 9 deletions

View File

@ -27,9 +27,9 @@ namespace Nz
struct NAZARA_CORE_API AnimationParams : ResourceParameters struct NAZARA_CORE_API AnimationParams : ResourceParameters
{ {
// La frame de fin à charger // Last frame to load (maximum)
std::size_t endFrame = 0xFFFFFFFF; std::size_t endFrame = 0xFFFFFFFF;
// La frame de début à charger // First frame to load
std::size_t startFrame = 0; std::size_t startFrame = 0;
// Reference skeleton // Reference skeleton
const Skeleton* skeleton = nullptr; const Skeleton* skeleton = nullptr;

View File

@ -272,10 +272,8 @@ namespace Nz
return; return;
} }
auto sequenceIt = m_impl->sequences.begin(); RemoveSequence(it->second);
std::advance(sequenceIt, it->second); m_impl->sequenceMap.erase(it);
m_impl->sequences.erase(sequenceIt);
} }
void Animation::RemoveSequence(std::size_t index) void Animation::RemoveSequence(std::size_t index)
@ -283,10 +281,14 @@ namespace Nz
NazaraAssert(m_impl, "Animation not created"); NazaraAssert(m_impl, "Animation not created");
NazaraAssert(index < m_impl->sequences.size(), "Sequence index out of range"); NazaraAssert(index < m_impl->sequences.size(), "Sequence index out of range");
auto it = m_impl->sequences.begin(); m_impl->sequences.erase(m_impl->sequences.begin() + index);
std::advance(it, index);
m_impl->sequences.erase(it); // Shift indices
for (auto& it : m_impl->sequenceMap)
{
if (it.second > index)
it.second--;
}
} }
Animation& Animation::operator=(Animation&&) noexcept = default; Animation& Animation::operator=(Animation&&) noexcept = default;