From 3c289bd13d6a0a55e3f2003d91dae6948c570ed3 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Tue, 4 Jun 2024 20:53:58 +0800 Subject: [PATCH] don't enqueue gltf animation if already playing --- dart_filament/native/src/SceneManager.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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)