icy3dw/src/client/object/world/client-world-loader.ts

28 lines
830 B
TypeScript

import { ImageLoader } from 'three';
import { WorldLoader } from '../../../common/world/WorldLoader';
import { CanvasUtils } from '../canvas-utils';
import { LoadingManagerWrapper } from '../resource/loading-manager';
const loader = new ImageLoader(LoadingManagerWrapper.getInstance().manager);
const canvasUtil = new CanvasUtils();
const worldPath = '/assets/terrain/region';
export class ClientWorldLoader implements WorldLoader {
async loadHeightMap(
chunkX: number,
chunkY: number,
scale: number,
): Promise<number[]> {
return new Promise((resolve, reject) => {
loader.load(
`${worldPath}/height-${chunkX}-${chunkY}.png`,
(data) => resolve(canvasUtil.readPixelDataRScaled(data, scale)),
undefined,
(err) => {
reject(err);
},
);
});
}
}