update draw line and shape
Some checks failed
Test / test (push) Has been cancelled

This commit is contained in:
2026-06-21 06:31:18 +02:00
parent 365a15c32a
commit 064c9b5758
9 changed files with 551 additions and 175 deletions

View File

@@ -35,12 +35,13 @@
* @param {HTMLCanvasElement} outCanvas
* @param {object[]} zones
*/
function rebakeComposite(baseCanvas, outCanvas, zones) {
function rebakeComposite(baseCanvas, outCanvas, zones, mapMeta = null) {
if (!baseCanvas?.width || !outCanvas) return false;
copyCanvas(baseCanvas, outCanvas);
const list = Array.isArray(zones) ? zones : [];
const linePx = (z) => window.MapObjects?.zoneLineWidthPx(z, mapMeta) ?? DEFAULT_LINE_WIDTH;
list.filter((z) => z?.type === "floor").forEach((z) => bakeFloor(outCanvas, z.points));
list.filter((z) => z?.type === "wall").forEach((z) => bakeWall(outCanvas, z.points));
list.filter((z) => z?.type === "wall").forEach((z) => bakeWall(outCanvas, z.points, linePx(z)));
return true;
}
@@ -136,16 +137,22 @@
return true;
}
function bakeZone(sourceCanvas, zone) {
function bakeZone(sourceCanvas, zone, mapMeta = null) {
if (!zone?.points?.length) return false;
if (zone.type === "wall") return bakeWall(sourceCanvas, zone.points);
if (zone.type === "wall") {
const px = window.MapObjects?.zoneLineWidthPx(zone, mapMeta) ?? DEFAULT_LINE_WIDTH;
return bakeWall(sourceCanvas, zone.points, px);
}
if (zone.type === "floor") return bakeFloor(sourceCanvas, zone.points);
return false;
}
function unbakeZone(sourceCanvas, zone) {
function unbakeZone(sourceCanvas, zone, mapMeta = null) {
if (!zone?.points?.length) return false;
if (zone.type === "wall") return unbakeWall(sourceCanvas, zone.points);
if (zone.type === "wall") {
const px = window.MapObjects?.zoneLineWidthPx(zone, mapMeta) ?? DEFAULT_LINE_WIDTH;
return unbakeWall(sourceCanvas, zone.points, px + 2);
}
if (zone.type === "floor") {
const ctx = sourceCanvas?.getContext("2d");
if (!ctx) return false;