From 1b8b2328c64cfdfffd846f98df315a81adec3451 Mon Sep 17 00:00:00 2001 From: Cole Schultz Date: Fri, 29 Apr 2022 03:41:05 -0500 Subject: [PATCH] Add the pathfinding radius setting (#194) --- js/pathfinding.js | 3 ++- js/settings.js | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/js/pathfinding.js b/js/pathfinding.js index dc006e7..8bedacb 100644 --- a/js/pathfinding.js +++ b/js/pathfinding.js @@ -240,7 +240,8 @@ export function findPath(from, to, token, previousWaypoints) { let tokenSize = Math.max(token.data.width, token.data.height) * canvas.dimensions.size; let pathfinder = gridlessPathfinders.get(tokenSize); if (!pathfinder) { - pathfinder = GridlessPathfinding.initialize(canvas.walls.placeables, tokenSize, token.data.elevation, Boolean(game.modules.get("wall-height")?.active)); + let radiusMultiplier = game.settings.get(settingsKey, "pathfindingRadius"); + pathfinder = GridlessPathfinding.initialize(canvas.walls.placeables, tokenSize * radiusMultiplier, token.data.elevation, Boolean(game.modules.get("wall-height")?.active)); gridlessPathfinders.set(tokenSize, pathfinder); } paintGridlessPathfindingDebug(pathfinder); diff --git a/js/settings.js b/js/settings.js index 5eaa99f..f4293f2 100644 --- a/js/settings.js +++ b/js/settings.js @@ -1,5 +1,6 @@ import {availableSpeedProviders, currentSpeedProvider, getDefaultSpeedProvider, updateSpeedProvider} from "./api.js"; import {SpeedProvider} from "./speed_provider.js" +import {wipePathfindingCache} from "./pathfinding.js" import { early_isGM } from "./util.js"; export const settingsKey = "drag-ruler"; @@ -100,10 +101,18 @@ export function registerSettings() { game.settings.register(settingsKey, "autoPathfinding", { name: "drag-ruler.settings.autoPathfinding.name", hint: "drag-ruler.settings.autoPathfinding.hint", - scpoe: "client", + scope: "client", config: early_isGM() || game.settings.get(settingsKey, "allowPathfinding"), type: Boolean, - defualt: false, + default: false, + }); + + game.settings.register(settingsKey, "pathfindingRadius", { + scope: "world", + config: false, + type: Number, + default: 0.9, + onChange: wipePathfindingCache, }); game.settings.register(settingsKey, "lastTerrainRulerHintTime", {