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