added option for updating on move

This commit is contained in:
grimsace
2026-05-07 15:28:38 -05:00
parent a359518dd8
commit 70ff6f7c51
2 changed files with 31 additions and 2 deletions
+4
View File
@@ -7,6 +7,10 @@
"empty": "No auras configured." "empty": "No auras configured."
}, },
"settings": { "settings": {
"refreshDuringMove": {
"name": "Refresh During Movement",
"hint": "If disabled, aura highlights will only refresh when a token stops moving or its settings are updated. This can improve performance."
},
"name": { "name": {
"name": "Aura Name" "name": "Aura Name"
}, },
+27 -2
View File
@@ -46,6 +46,20 @@ let highlightedFilterTargets = new Set();
let pendingHighlightRefresh = null; let pendingHighlightRefresh = null;
const alphaShapeCache = new Map(); const alphaShapeCache = new Map();
const REFRESH_DURING_MOVE_SETTING = "refreshDuringMove";
Hooks.once("init", () => {
game.settings.register(MODULE_ID, REFRESH_DURING_MOVE_SETTING, {
name: localize("settings.refreshDuringMove.name"),
hint: localize("settings.refreshDuringMove.hint"),
scope: "client",
config: true,
type: Boolean,
default: true,
onChange: scheduleAuraHighlightRefresh,
});
});
Hooks.on("renderTokenConfig", injectAurasTab); Hooks.on("renderTokenConfig", injectAurasTab);
Hooks.on("renderPrototypeTokenConfig", injectAurasTab); Hooks.on("renderPrototypeTokenConfig", injectAurasTab);
Hooks.on("preUpdateToken", (_token, changes) => Hooks.on("preUpdateToken", (_token, changes) =>
@@ -58,9 +72,20 @@ Hooks.on("canvasReady", scheduleAuraHighlightRefresh);
Hooks.on("canvasTearDown", clearAuraHighlights); Hooks.on("canvasTearDown", clearAuraHighlights);
Hooks.on("controlToken", scheduleAuraHighlightRefresh); Hooks.on("controlToken", scheduleAuraHighlightRefresh);
Hooks.on("updateToken", scheduleAuraHighlightRefresh); Hooks.on("updateToken", scheduleAuraHighlightRefresh);
Hooks.on("moveToken", scheduleAuraHighlightRefresh); Hooks.on("moveToken", () => {
if (game.settings.get(MODULE_ID, REFRESH_DURING_MOVE_SETTING))
scheduleAuraHighlightRefresh();
});
Hooks.on("stopToken", scheduleAuraHighlightRefresh); Hooks.on("stopToken", scheduleAuraHighlightRefresh);
Hooks.on("refreshToken", scheduleAuraHighlightRefresh); Hooks.on("refreshToken", (token) => {
const isAnimating = !!(token.animationContexts?.size || token._animation);
if (
game.settings.get(MODULE_ID, REFRESH_DURING_MOVE_SETTING) ||
!isAnimating
) {
scheduleAuraHighlightRefresh();
}
});
Hooks.on("createToken", scheduleAuraHighlightRefresh); Hooks.on("createToken", scheduleAuraHighlightRefresh);
Hooks.on("deleteToken", scheduleAuraHighlightRefresh); Hooks.on("deleteToken", scheduleAuraHighlightRefresh);