diff --git a/CHANGELOG.md b/CHANGELOG.md index e0f29e6..43caaab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### New features - GMs now have an option to reset the movement history for individual tokens in the right click menu of the combat tracker +- When releasing a dragged token while pressing Alt the token will be moved to the target location without an animation ### Bugfixes - When starting to drag a new token while the previous one is still moving the ruler won't dissappear anymore when the previous token arrives at it's destination. diff --git a/src/foundry_imports.js b/src/foundry_imports.js index eec7977..df37415 100644 --- a/src/foundry_imports.js +++ b/src/foundry_imports.js @@ -68,7 +68,9 @@ async function animateTokens(tokens, draggedToken, draggedRays, wasPaused) { for (const {token, rays} of tokenAnimationData) { token._noAnimate = true; } - for (let i = 0;i < tokenAnimationData[0].rays.length; i++) { + const animate = !game.keyboard.isDown("Alt"); + const startWaypoint = animate ? 0 : tokenAnimationData[0].rays.length - 1; + for (let i = startWaypoint;i < tokenAnimationData[0].rays.length; i++) { if (!wasPaused && game.paused) break; const tokenPaths = tokenAnimationData.map(({token, rays, dx, dy}) => { const ray = rays[i]; @@ -79,8 +81,9 @@ async function animateTokens(tokens, draggedToken, draggedRays, wasPaused) { const updates = tokenPaths.map(({token, path}) => { return {x: path.B.x, y: path.B.y, _id: token.id}; }); - await draggedToken.scene.updateEmbeddedEntity(draggedToken.constructor.embeddedName, updates); - await Promise.all(tokenPaths.map(({token, path}) => token.animateMovement(path))); + await draggedToken.scene.updateEmbeddedEntity(draggedToken.constructor.embeddedName, updates, {animate}); + if (animate) + await Promise.all(tokenPaths.map(({token, path}) => token.animateMovement(path))); } for (const {token} of tokenAnimationData) { token._noAnimate = false;