diff --git a/dart_filament/native/src/SceneManager.cpp b/dart_filament/native/src/SceneManager.cpp index f21fa322..96233651 100644 --- a/dart_filament/native/src/SceneManager.cpp +++ b/dart_filament/native/src/SceneManager.cpp @@ -1167,7 +1167,18 @@ namespace flutter_filament animation.reverse = reverse; animation.durationInSecs = instance->getAnimator()->getAnimationDuration(index); - animationComponent.gltfAnimations.push_back(animation); + bool found = false; + + // don't play the animation if it's already running + for(int i=0; i < animationComponent.gltfAnimations.size(); i++) { + if(animationComponent.gltfAnimations[i].index == index) { + found = true; + break; + } + } + if(!found) { + animationComponent.gltfAnimations.push_back(animation); + } } void SceneManager::stopAnimation(EntityId entityId, int index)