make tileserver better
This commit is contained in:
parent
0fba279f64
commit
6eaea5b00c
|
@ -90,9 +90,10 @@ function addIndexedSubtiletoTile(
|
||||||
const [dx, dy] = cell;
|
const [dx, dy] = cell;
|
||||||
const chunkOffset = (dx + dy * subtilesInTile * TILE_SIZE) * TILE_SIZE;
|
const chunkOffset = (dx + dy * subtilesInTile * TILE_SIZE) * TILE_SIZE;
|
||||||
|
|
||||||
const emptyR = palette.rgb[0];
|
const { rgb } = palette;
|
||||||
const emptyB = palette.rgb[1];
|
const emptyR = rgb[0];
|
||||||
const emptyG = palette.rgb[1];
|
const emptyB = rgb[1];
|
||||||
|
const emptyG = rgb[1];
|
||||||
|
|
||||||
let pos = 0;
|
let pos = 0;
|
||||||
let clr;
|
let clr;
|
||||||
|
@ -102,9 +103,9 @@ function addIndexedSubtiletoTile(
|
||||||
while (channelOffset < max) {
|
while (channelOffset < max) {
|
||||||
if (pos < subtile.length) {
|
if (pos < subtile.length) {
|
||||||
clr = (subtile[pos++] & 0x3F) * 3;
|
clr = (subtile[pos++] & 0x3F) * 3;
|
||||||
buffer[channelOffset++] = palette.rgb[clr++];
|
buffer[channelOffset++] = rgb[clr++];
|
||||||
buffer[channelOffset++] = palette.rgb[clr++];
|
buffer[channelOffset++] = rgb[clr++];
|
||||||
buffer[channelOffset++] = palette.rgb[clr];
|
buffer[channelOffset++] = rgb[clr];
|
||||||
} else {
|
} else {
|
||||||
buffer[channelOffset++] = emptyR;
|
buffer[channelOffset++] = emptyR;
|
||||||
buffer[channelOffset++] = emptyB;
|
buffer[channelOffset++] = emptyB;
|
||||||
|
@ -137,8 +138,9 @@ export async function createZoomTileFromChunk(
|
||||||
canvas,
|
canvas,
|
||||||
canvasTileFolder,
|
canvasTileFolder,
|
||||||
cell,
|
cell,
|
||||||
|
gPalette = null,
|
||||||
) {
|
) {
|
||||||
const palette = new Palette(canvas.colors);
|
const palette = gPalette || new Palette(canvas.colors);
|
||||||
const canvasSize = canvas.size;
|
const canvasSize = canvas.size;
|
||||||
const [x, y] = cell;
|
const [x, y] = cell;
|
||||||
const maxTiledZoom = getMaxTiledZoom(canvasSize);
|
const maxTiledZoom = getMaxTiledZoom(canvasSize);
|
||||||
|
@ -221,8 +223,9 @@ export async function createZoomedTile(
|
||||||
canvas,
|
canvas,
|
||||||
canvasTileFolder,
|
canvasTileFolder,
|
||||||
cell,
|
cell,
|
||||||
|
gPalette = null,
|
||||||
) {
|
) {
|
||||||
const palette = new Palette(canvas.colors);
|
const palette = gPalette || new Palette(canvas.colors);
|
||||||
const tileRGBBuffer = new Uint8Array(
|
const tileRGBBuffer = new Uint8Array(
|
||||||
TILE_SIZE * TILE_SIZE * TILE_ZOOM_LEVEL * TILE_ZOOM_LEVEL * 3,
|
TILE_SIZE * TILE_SIZE * TILE_ZOOM_LEVEL * TILE_ZOOM_LEVEL * 3,
|
||||||
);
|
);
|
||||||
|
@ -461,11 +464,11 @@ export async function initializeTiles(
|
||||||
const filename = `${canvasTileFolder}/${zoom}/${cx}/${cy}.png`;
|
const filename = `${canvasTileFolder}/${zoom}/${cx}/${cy}.png`;
|
||||||
if (force || !fs.existsSync(filename)) {
|
if (force || !fs.existsSync(filename)) {
|
||||||
const ret = await createZoomTileFromChunk(
|
const ret = await createZoomTileFromChunk(
|
||||||
canvasSize,
|
|
||||||
canvasId,
|
canvasId,
|
||||||
|
canvas,
|
||||||
canvasTileFolder,
|
canvasTileFolder,
|
||||||
palette,
|
|
||||||
[cx, cy],
|
[cx, cy],
|
||||||
|
palette,
|
||||||
);
|
);
|
||||||
if (ret) cnts += 1;
|
if (ret) cnts += 1;
|
||||||
cnt += 1;
|
cnt += 1;
|
||||||
|
@ -490,9 +493,10 @@ export async function initializeTiles(
|
||||||
const filename = `${canvasTileFolder}/${zoom}/${cx}/${cy}.png`;
|
const filename = `${canvasTileFolder}/${zoom}/${cx}/${cy}.png`;
|
||||||
if (force || !fs.existsSync(filename)) {
|
if (force || !fs.existsSync(filename)) {
|
||||||
const ret = await createZoomedTile(
|
const ret = await createZoomedTile(
|
||||||
|
canvas,
|
||||||
canvasTileFolder,
|
canvasTileFolder,
|
||||||
palette,
|
|
||||||
[zoom, cx, cy],
|
[zoom, cx, cy],
|
||||||
|
palette,
|
||||||
);
|
);
|
||||||
if (ret) cnts += 1;
|
if (ret) cnts += 1;
|
||||||
cnt += 1;
|
cnt += 1;
|
||||||
|
|
|
@ -42,7 +42,6 @@ class CanvasUpdater {
|
||||||
this.canvasTileFolder = `${TILE_FOLDER}/${id}`;
|
this.canvasTileFolder = `${TILE_FOLDER}/${id}`;
|
||||||
this.firstZoomtileWidth = this.canvas.size / TILE_SIZE / TILE_ZOOM_LEVEL;
|
this.firstZoomtileWidth = this.canvas.size / TILE_SIZE / TILE_ZOOM_LEVEL;
|
||||||
this.maxTiledZoom = getMaxTiledZoom(this.canvas.size);
|
this.maxTiledZoom = getMaxTiledZoom(this.canvas.size);
|
||||||
this.startReloadingLoops();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -140,7 +139,7 @@ class CanvasUpdater {
|
||||||
/*
|
/*
|
||||||
* initialize queues and start loops for updating tiles
|
* initialize queues and start loops for updating tiles
|
||||||
*/
|
*/
|
||||||
async startReloadingLoops() {
|
async initialize() {
|
||||||
logger.info(`Tiling: Using folder ${this.canvasTileFolder}`);
|
logger.info(`Tiling: Using folder ${this.canvasTileFolder}`);
|
||||||
if (!fs.existsSync(`${this.canvasTileFolder}/0`)) {
|
if (!fs.existsSync(`${this.canvasTileFolder}/0`)) {
|
||||||
if (!fs.existsSync(this.canvasTileFolder)) {
|
if (!fs.existsSync(this.canvasTileFolder)) {
|
||||||
|
@ -177,7 +176,7 @@ RedisCanvas.setChunkChangeCallback(registerChunkChange);
|
||||||
/*
|
/*
|
||||||
* starting update loops for canvases
|
* starting update loops for canvases
|
||||||
*/
|
*/
|
||||||
export function startAllCanvasLoops() {
|
export async function startAllCanvasLoops() {
|
||||||
if (!fs.existsSync(`${TILE_FOLDER}`)) fs.mkdirSync(`${TILE_FOLDER}`);
|
if (!fs.existsSync(`${TILE_FOLDER}`)) fs.mkdirSync(`${TILE_FOLDER}`);
|
||||||
const ids = Object.keys(canvases);
|
const ids = Object.keys(canvases);
|
||||||
for (let i = 0; i < ids.length; i += 1) {
|
for (let i = 0; i < ids.length; i += 1) {
|
||||||
|
@ -186,7 +185,9 @@ export function startAllCanvasLoops() {
|
||||||
if (!canvas.v) {
|
if (!canvas.v) {
|
||||||
// just 2D canvases
|
// just 2D canvases
|
||||||
const updater = new CanvasUpdater(id);
|
const updater = new CanvasUpdater(id);
|
||||||
CanvasUpdaters[ids[i]] = updater;
|
// eslint-disable-next-line no-await-in-loop
|
||||||
|
await updater.initialize();
|
||||||
|
CanvasUpdaters[id] = updater;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@ connectRedis()
|
||||||
// eslint-disable-next-line max-len
|
// eslint-disable-next-line max-len
|
||||||
`Tiling: Error on executing task ${task} args ${args}: ${error.message}`,
|
`Tiling: Error on executing task ${task} args ${args}: ${error.message}`,
|
||||||
);
|
);
|
||||||
|
parentPort.postMessage('Failure!');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user