aboutsummaryrefslogtreecommitdiff
path: root/engines/toon/script_func.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/toon/script_func.cpp')
-rw-r--r--engines/toon/script_func.cpp16
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;
}