From f1542b7789fb227c59c6407c6c01cc4025436bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Fri, 5 Feb 2021 11:11:32 +0100 Subject: [PATCH] Start measuring immediately when the token is being dragged --- CHANGELOG.md | 1 + src/foundry_imports.js | 20 ++++++++++++++++++++ src/main.js | 4 ++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f58c64..81409c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## In development ### Bugfixes - Fixed a bug where tokens wouldn't be moved to the corect end position on gridless maps +- Ruler now appears immediately when the token is being dragged ## v1.1.0 ### New features diff --git a/src/foundry_imports.js b/src/foundry_imports.js index 2c8263b..4914389 100644 --- a/src/foundry_imports.js +++ b/src/foundry_imports.js @@ -74,3 +74,23 @@ function calculateTokenOffset(tokenA, tokenB) { function applyOffsetToRay(ray, offset) { return new Ray({x: ray.A.x + offset.x, y: ray.A.y + offset.y}, {x: ray.B.x + offset.x, y: ray.B.y + offset.y}) } + +// This is a modified version of Ruler._onMouseMove from foundry 0.7.9 +export function onMouseMove(event) { + if (this._state === Ruler.STATES.MOVING) return; + + // Extract event data + const mt = event._measureTime || 0; + const { destination, originalEvent } = event.data; + + // Hide any existing Token HUD + canvas.hud.token.clear(); + delete event.data.hudState; + + // Draw measurement updates + if (Date.now() - mt > 50) { + this.measure(destination, { gridSpaces: !originalEvent.shiftKey }); + event._measureTime = Date.now(); + this._state = Ruler.STATES.MEASURING; + } +} diff --git a/src/main.js b/src/main.js index f291eaa..625c49b 100644 --- a/src/main.js +++ b/src/main.js @@ -1,7 +1,7 @@ "use strict" import {availableSpeedProviders, currentSpeedProvider, registerModule, registerSystem, setCurrentSpeedProvider} from "./api.js" -import {moveTokens} from "./foundry_imports.js" +import {moveTokens, onMouseMove} from "./foundry_imports.js" import {registerSettings, settingsKey} from "./settings.js" Hooks.once("init", () => { @@ -98,7 +98,7 @@ function onTokenLeftDragStart(event) { function onTokenLeftDragMove(event) { if (canvas.controls.ruler.isDragRuler) - canvas.controls.ruler._onMouseMove(event) + onMouseMove.call(canvas.controls.ruler, event) } function onTokenDragLeftDrop(event) {