diff --git a/src/liberty/objects/CutsceneHead.cpp b/src/liberty/objects/CutsceneHead.cpp index 1ef52036..ef9e991c 100644 --- a/src/liberty/objects/CutsceneHead.cpp +++ b/src/liberty/objects/CutsceneHead.cpp @@ -197,6 +197,10 @@ CCutsceneHead::PlayAnimation(const char *animName) RwStreamSkip(stream, offset*2048); if(RwStreamFindChunk(stream, rwID_HANIMANIMATION, nil, nil)){ anim = RpHAnimAnimationStreamRead(stream); + if (hier->interpolator->currentAnim) { + RpHAnimAnimationDestroy(hier->interpolator->currentAnim); + hier->interpolator->currentAnim = nil; + } RpHAnimHierarchySetCurrentAnim(hier, anim); } diff --git a/vendor/librw/src/anim.cpp b/vendor/librw/src/anim.cpp index 2003f1b3..cc4d7f2c 100644 --- a/vendor/librw/src/anim.cpp +++ b/vendor/librw/src/anim.cpp @@ -221,6 +221,7 @@ AnimInterpolator::setCurrentAnim(Animation *anim) { int32 i; AnimInterpolatorInfo *interpInfo = anim->interpInfo; + assert(this->currentAnim == nil); this->currentAnim = anim; this->currentTime = 0.0f; int32 maxkf = this->maxInterpKeyFrameSize;