This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user