@loaders.gl/i3s
Version:
i3s .
50 lines (43 loc) • 1.51 kB
text/typescript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright vis.gl contributors
import type {LoaderWithParser, LoaderContext} from '@loaders.gl/loader-utils';
import type {I3SLoaderOptions} from './i3s-loader';
import {parseI3STileContent} from './lib/parsers/parse-i3s-tile-content';
import {I3STileContent, I3STileOptions, I3STilesetOptions} from './types';
// __VERSION__ is injected by babel-plugin-version-inline
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
/**
* Loader for I3S - Indexed 3D Scene Layer
*/
export const I3SContentLoader = {
dataType: null as unknown as I3STileContent | null,
batchType: null as never,
name: 'I3S Content (Indexed Scene Layers)',
id: 'i3s-content',
module: 'i3s',
worker: true,
version: VERSION,
mimeTypes: ['application/octet-stream'],
parse,
extensions: ['bin'],
options: {
'i3s-content': {}
}
} as const satisfies LoaderWithParser<I3STileContent | null, never, I3SLoaderOptions>;
async function parse(data, options?: I3SLoaderOptions, context?: LoaderContext) {
const {tile, _tileOptions, tileset, _tilesetOptions} = options?.i3s || {};
const tileOptions = _tileOptions || tile;
const tilesetOptions = _tilesetOptions || tileset;
if (!tileOptions || !tilesetOptions) {
return null;
}
return await parseI3STileContent(
data,
tileOptions as I3STileOptions,
tilesetOptions as I3STilesetOptions,
options,
context
);
}