diff options
Diffstat (limited to 'engines/toon/script_func.cpp')
-rw-r--r-- | engines/toon/script_func.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/engines/toon/script_func.cpp b/engines/toon/script_func.cpp index 2e727f2ab5..67e20f3354 100644 --- a/engines/toon/script_func.cpp +++ b/engines/toon/script_func.cpp @@ -941,7 +941,7 @@ int32 ScriptFunc::sys_Cmd_Init_Scene_Anim(EMCState *state) { sceneAnim->_animInstance->setAnimationRange(stackPos(11), stackPos(11)); sceneAnim->_animInstance->setFrame(stackPos(11)); - _vm->getAnimationManager()->addInstance(sceneAnim->_animInstance); + debugC(0, 0xfff, "Init Anim %s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", GetText(12, state), stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7), stackPos(8), stackPos(9), stackPos(10), stackPos(11), stackPos(12)); @@ -977,9 +977,12 @@ int32 ScriptFunc::sys_Cmd_Init_Scene_Anim(EMCState *state) { } sceneAnim->_animInstance->setId(stackPos(0)); - - sceneAnim->_active = true; + + // add the animation to the list only if it's already visible + if (flags & 1) { + _vm->getAnimationManager()->addInstance(sceneAnim->_animInstance); + } return 0; } @@ -989,9 +992,14 @@ int32 ScriptFunc::sys_Cmd_Set_Scene_Animation_Active_Flag(EMCState *state) { SceneAnimation *sceneAnim = _vm->getSceneAnimation(animId); - if (sceneAnim->_active) + if (sceneAnim->_active) { sceneAnim->_animInstance->setVisible(activeFlag > 0); + if(activeFlag) { + _vm->getAnimationManager()->addInstance(sceneAnim->_animInstance); + } + } + return 0; } |