diff --git a/src/mol-plugin-state/animation/built-in/model-index.ts b/src/mol-plugin-state/animation/built-in/model-index.ts index bc969c86f6e870eb4344b8a5f77689e77d92dc71..ecec3d638b5b17a76a467d84ab3473c313011976 100644 --- a/src/mol-plugin-state/animation/built-in/model-index.ts +++ b/src/mol-plugin-state/animation/built-in/model-index.ts @@ -124,6 +124,11 @@ export const AnimateModelIndex = PluginStateAnimation.create({ ? params.duration.params.durationInS * 1000 : Math.ceil(1000 * traj.data.frameCount / params.duration.params.targetFps); + if (params.mode.name === 'once' && t.current >= durationInMs) { + isEnd = true; + return { modelIndex: traj.data.frameCount-1 }; + } + let phase: number = (t.current % durationInMs) / durationInMs; if (params.mode.name === 'loop') { if (params.mode.params.direction === 'backward') { @@ -135,7 +140,6 @@ export const AnimateModelIndex = PluginStateAnimation.create({ } const modelIndex = Math.min(Math.floor(traj.data.frameCount * phase), traj.data.frameCount - 1); - isEnd = isEnd || modelIndex === traj.data.frameCount - 1; return { modelIndex }; } });