@loaders.gl/tile-converter 4.0.0-alpha.20 → 4.0.0-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/converter.min.js +113 -113
- package/dist/dist.min.js +33160 -32581
- package/dist/es5/deps-installer/deps-installer.js +1 -1
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +70 -4
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +34 -32
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js +2 -2
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/es5/index.js +0 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/es5/slpk-extractor/slpk-extractor.js +7 -8
- package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +1 -1
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +33 -4
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +7 -5
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-server/bin/i3s-server.min.js +70 -70
- package/dist/esm/i3s-server/controllers/slpk-controller.js +1 -1
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/slpk-extractor/slpk-extractor.js +2 -3
- package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -1
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +15 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/load-3d-tiles.js +51 -5
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +6 -4
- package/dist/i3s-server/controllers/slpk-controller.js +2 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/slpk-extractor/slpk-extractor.d.ts +1 -1
- package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -1
- package/dist/slpk-extractor/slpk-extractor.js +3 -4
- package/dist/slpk-extractor.min.js +35 -35
- package/package.json +14 -14
- package/src/i3s-converter/helpers/load-3d-tiles.ts +61 -5
- package/src/i3s-converter/i3s-converter.ts +12 -5
- package/src/i3s-server/controllers/slpk-controller.ts +1 -1
- package/src/index.ts +0 -1
- package/src/slpk-extractor/slpk-extractor.ts +2 -3
- package/dist/es5/slpk-extractor/helpers/file-handle-file.js +0 -214
- package/dist/es5/slpk-extractor/helpers/file-handle-file.js.map +0 -1
- package/dist/es5/slpk-extractor/helpers/fs-promises.js +0 -77
- package/dist/es5/slpk-extractor/helpers/fs-promises.js.map +0 -1
- package/dist/esm/slpk-extractor/helpers/file-handle-file.js +0 -54
- package/dist/esm/slpk-extractor/helpers/file-handle-file.js.map +0 -1
- package/dist/esm/slpk-extractor/helpers/fs-promises.js +0 -32
- package/dist/esm/slpk-extractor/helpers/fs-promises.js.map +0 -1
- package/dist/slpk-extractor/helpers/file-handle-file.d.ts +0 -51
- package/dist/slpk-extractor/helpers/file-handle-file.d.ts.map +0 -1
- package/dist/slpk-extractor/helpers/file-handle-file.js +0 -86
- package/dist/slpk-extractor/helpers/fs-promises.d.ts +0 -38
- package/dist/slpk-extractor/helpers/fs-promises.d.ts.map +0 -1
- package/dist/slpk-extractor/helpers/fs-promises.js +0 -51
- package/src/slpk-extractor/helpers/file-handle-file.ts +0 -109
- package/src/slpk-extractor/helpers/fs-promises.ts +0 -66
package/dist/es5/pgm-loader.js
CHANGED
|
@@ -8,7 +8,7 @@ exports.PGMLoader = void 0;
|
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _geoid = require("@math.gl/geoid");
|
|
11
|
-
var VERSION = typeof "4.0.0-alpha.
|
|
11
|
+
var VERSION = typeof "4.0.0-alpha.22" !== 'undefined' ? "4.0.0-alpha.22" : 'latest';
|
|
12
12
|
var PGMLoader = {
|
|
13
13
|
name: 'PGM - Netpbm grayscale image format',
|
|
14
14
|
id: 'pgm',
|
|
@@ -11,17 +11,16 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
11
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
12
|
var _core = require("@loaders.gl/core");
|
|
13
13
|
var _constants = require("../constants");
|
|
14
|
-
var _fileHandleFile = require("./helpers/file-handle-file");
|
|
15
14
|
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
16
15
|
var _zip = require("@loaders.gl/zip");
|
|
17
16
|
var _compression = require("@loaders.gl/compression");
|
|
18
17
|
var _fileUtils = require("../lib/utils/file-utils");
|
|
19
18
|
var indexNames = ['3dSceneLayer.json.gz', '3dNodeIndexDocument.json.gz', 'sharedResource.json.gz'];
|
|
20
|
-
var
|
|
21
|
-
function
|
|
22
|
-
(0, _classCallCheck2.default)(this,
|
|
19
|
+
var SLPKExtractor = function () {
|
|
20
|
+
function SLPKExtractor() {
|
|
21
|
+
(0, _classCallCheck2.default)(this, SLPKExtractor);
|
|
23
22
|
}
|
|
24
|
-
(0, _createClass2.default)(
|
|
23
|
+
(0, _createClass2.default)(SLPKExtractor, [{
|
|
25
24
|
key: "extract",
|
|
26
25
|
value: function () {
|
|
27
26
|
var _extract = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
|
|
@@ -38,7 +37,7 @@ var SLPKConverter = function () {
|
|
|
38
37
|
case 3:
|
|
39
38
|
inputUrl = options.inputUrl;
|
|
40
39
|
_context.next = 6;
|
|
41
|
-
return
|
|
40
|
+
return _zip.FileHandleFile.from(inputUrl);
|
|
42
41
|
case 6:
|
|
43
42
|
provider = _context.sent;
|
|
44
43
|
_context.next = 9;
|
|
@@ -166,7 +165,7 @@ var SLPKConverter = function () {
|
|
|
166
165
|
return writeFile;
|
|
167
166
|
}()
|
|
168
167
|
}]);
|
|
169
|
-
return
|
|
168
|
+
return SLPKExtractor;
|
|
170
169
|
}();
|
|
171
|
-
exports.default =
|
|
170
|
+
exports.default = SLPKExtractor;
|
|
172
171
|
//# sourceMappingURL=slpk-extractor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slpk-extractor.js","names":["_core","require","_constants","
|
|
1
|
+
{"version":3,"file":"slpk-extractor.js","names":["_core","require","_constants","_loaderUtils","_zip","_compression","_fileUtils","indexNames","SLPKExtractor","_classCallCheck2","default","_createClass2","key","value","_extract","_asyncToGenerator2","_regenerator","mark","_callee","options","inputUrl","provider","localHeader","_localHeader","wrap","_callee$","_context","prev","next","isBrowser","console","log","BROWSER_ERROR_MESSAGE","abrupt","FileHandleFile","from","sent","parseZipLocalFileHeader","t0","t1","t2","correctIndexNames","fileName","slice","fileDataOffset","compressedSize","t3","t4","name","data","unGzip","call","t5","t6","outputPath","writeFile","stop","extract","_x","apply","arguments","includes","path","filename","join","dirname","parts","exec","concat","at","_unGzip","_callee2","file","_file$name","_file$name2","compression","decompressedData","_callee2$","_context2","test","GZipCompression","decompress","Promise","resolve","_x2","_writeFile2","_callee3","finalPath","dirName","_callee3$","_context3","_x3","_x4","exports"],"sources":["../../../src/slpk-extractor/slpk-extractor.ts"],"sourcesContent":["import {isBrowser} from '@loaders.gl/core';\n\nimport {BROWSER_ERROR_MESSAGE} from '../constants';\nimport {path} from '@loaders.gl/loader-utils';\nimport {FileHandleFile, parseZipLocalFileHeader} from '@loaders.gl/zip';\nimport {GZipCompression} from '@loaders.gl/compression';\nimport {writeFile} from '../lib/utils/file-utils';\n\nconst indexNames = [\n '3dSceneLayer.json.gz',\n '3dNodeIndexDocument.json.gz',\n 'sharedResource.json.gz'\n];\n\n/**\n * Description of the file in the SLPK\n */\ntype File = {\n name: string | null;\n data: ArrayBuffer;\n};\n\n/**\n * Converter from slpk to i3s\n */\nexport default class SLPKExtractor {\n /**\n * Extract slpk to i3s\n * @param options\n * @param options.inputUrl the url to read SLPK file\n * @param options.outputPath the output filename\n */\n public async extract(options: {inputUrl: string; outputPath: string}): Promise<string> {\n if (isBrowser) {\n console.log(BROWSER_ERROR_MESSAGE);\n return BROWSER_ERROR_MESSAGE;\n }\n const {inputUrl} = options;\n\n const provider = await FileHandleFile.from(inputUrl);\n\n let localHeader = await parseZipLocalFileHeader(0n, provider);\n while (localHeader) {\n await this.writeFile(\n await this.unGzip({\n name: this.correctIndexNames(localHeader.fileName),\n data: await provider.slice(\n localHeader.fileDataOffset,\n localHeader.fileDataOffset + localHeader.compressedSize\n )\n }),\n options.outputPath\n );\n localHeader = await parseZipLocalFileHeader(\n localHeader.fileDataOffset + localHeader?.compressedSize,\n provider\n );\n }\n\n return 'success';\n }\n\n /**\n * Defines file name and path for i3s format\n * @param fileName initial file name and path\n */\n\n private correctIndexNames(fileName: string): string | null {\n if (indexNames.includes(path.filename(path.join('/', fileName)))) {\n return path.join(path.dirname(fileName), 'index.json.gz');\n }\n // finds path with name part and extention part\n let parts = /^(.*\\/[^\\/\\.]*)(\\..+)$/.exec(fileName);\n if (!parts) {\n return null;\n }\n return `${parts?.at(1)}/index${parts?.at(2)}`;\n }\n\n private async unGzip(file: File): Promise<File> {\n if (/\\.gz$/.test(file.name ?? '')) {\n const compression = new GZipCompression();\n\n const decompressedData = await compression.decompress(file.data);\n\n return {data: decompressedData, name: (file.name ?? '').slice(0, -3)};\n }\n return Promise.resolve(file);\n }\n\n private async writeFile(options: File, outputPath: string): Promise<void> {\n if (!options.name) {\n return;\n }\n const finalPath = path.join(outputPath, options.name);\n const dirName = path.dirname(finalPath);\n const fileName = path.filename(finalPath);\n await writeFile(dirName, options.data, fileName);\n }\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { join } from 'path';
|
|
|
5
5
|
import { ChildProcessProxy } from '@loaders.gl/worker-utils';
|
|
6
6
|
import { DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS } from '@loaders.gl/draco';
|
|
7
7
|
import { BASIS_EXTERNAL_LIBRARIES } from '@loaders.gl/textures';
|
|
8
|
-
const VERSION = typeof "4.0.0-alpha.
|
|
8
|
+
const VERSION = typeof "4.0.0-alpha.22" !== 'undefined' ? "4.0.0-alpha.22" : 'beta';
|
|
9
9
|
const PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';
|
|
10
10
|
export class DepsInstaller {
|
|
11
11
|
async install() {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { Tiles3DArchiveFileSystem } from '@loaders.gl/3d-tiles';
|
|
1
2
|
import { load } from '@loaders.gl/core';
|
|
2
3
|
export const loadNestedTileset = async (sourceTileset, sourceTile, tilesetLoadOptions) => {
|
|
3
|
-
const isTileset = sourceTile
|
|
4
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
4
5
|
if (!sourceTileset || !sourceTile.contentUrl || !isTileset) {
|
|
5
6
|
return;
|
|
6
7
|
}
|
|
@@ -11,13 +12,13 @@ export const loadNestedTileset = async (sourceTileset, sourceTile, tilesetLoadOp
|
|
|
11
12
|
assetGltfUpAxis: sourceTileset.asset && sourceTileset.asset.gltfUpAxis || 'Y'
|
|
12
13
|
}
|
|
13
14
|
};
|
|
14
|
-
const tileContent = await
|
|
15
|
+
const tileContent = await loadFromArchive(sourceTile.contentUrl, sourceTileset.loader, loadOptions);
|
|
15
16
|
if (tileContent.root) {
|
|
16
17
|
sourceTile.children = [tileContent.root];
|
|
17
18
|
}
|
|
18
19
|
};
|
|
19
20
|
export const loadTile3DContent = async (sourceTileset, sourceTile, tilesetLoadOptions) => {
|
|
20
|
-
const isTileset = sourceTile
|
|
21
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
21
22
|
if (!sourceTileset || !sourceTile.contentUrl || isTileset) {
|
|
22
23
|
return null;
|
|
23
24
|
}
|
|
@@ -29,7 +30,35 @@ export const loadTile3DContent = async (sourceTileset, sourceTile, tilesetLoadOp
|
|
|
29
30
|
assetGltfUpAxis: sourceTileset.asset && sourceTileset.asset.gltfUpAxis || 'Y'
|
|
30
31
|
}
|
|
31
32
|
};
|
|
32
|
-
const tileContent = await
|
|
33
|
+
const tileContent = await loadFromArchive(sourceTile.contentUrl, sourceTileset.loader, loadOptions);
|
|
33
34
|
return tileContent;
|
|
34
35
|
};
|
|
36
|
+
export async function loadFromArchive(url, loader, loadOptions) {
|
|
37
|
+
const tz3UrlParts = url.split('.3tz');
|
|
38
|
+
let filename;
|
|
39
|
+
if (tz3UrlParts.length === 1) {
|
|
40
|
+
filename = null;
|
|
41
|
+
} else if (tz3UrlParts.length === 2) {
|
|
42
|
+
filename = tz3UrlParts[1].slice(1);
|
|
43
|
+
if (filename === '') {
|
|
44
|
+
filename = 'tileset.json';
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
throw new Error('Unexpected URL format');
|
|
48
|
+
}
|
|
49
|
+
if (filename) {
|
|
50
|
+
const tz3Path = "".concat(tz3UrlParts[0], ".3tz");
|
|
51
|
+
const fileSystem = new Tiles3DArchiveFileSystem(tz3Path);
|
|
52
|
+
const content = await load(filename, loader, {
|
|
53
|
+
...loadOptions,
|
|
54
|
+
fetch: fileSystem.fetch.bind(fileSystem)
|
|
55
|
+
});
|
|
56
|
+
await fileSystem.destroy();
|
|
57
|
+
return content;
|
|
58
|
+
}
|
|
59
|
+
return await load(url, loader, loadOptions);
|
|
60
|
+
}
|
|
61
|
+
export function isNestedTileset(tile) {
|
|
62
|
+
return (tile === null || tile === void 0 ? void 0 : tile.type) === 'json' || (tile === null || tile === void 0 ? void 0 : tile.type) === '3tz';
|
|
63
|
+
}
|
|
35
64
|
//# sourceMappingURL=load-3d-tiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-3d-tiles.js","names":["load","loadNestedTileset","sourceTileset","sourceTile","tilesetLoadOptions","isTileset","
|
|
1
|
+
{"version":3,"file":"load-3d-tiles.js","names":["Tiles3DArchiveFileSystem","load","loadNestedTileset","sourceTileset","sourceTile","tilesetLoadOptions","isTileset","isNestedTileset","contentUrl","loadOptions","loader","id","assetGltfUpAxis","asset","gltfUpAxis","tileContent","loadFromArchive","root","children","loadTile3DContent","url","tz3UrlParts","split","filename","length","slice","Error","tz3Path","concat","fileSystem","content","fetch","bind","destroy","tile","type"],"sources":["../../../../src/i3s-converter/helpers/load-3d-tiles.ts"],"sourcesContent":["import type {\n Tiles3DLoaderOptions,\n Tiles3DTileContent,\n Tiles3DTileJSONPostprocessed,\n Tiles3DTilesetJSONPostprocessed\n} from '@loaders.gl/3d-tiles';\nimport {Tiles3DArchiveFileSystem} from '@loaders.gl/3d-tiles';\nimport {LoaderWithParser, load} from '@loaders.gl/core';\n\n/**\n * Load nested 3DTiles tileset. If the sourceTile is not nested tileset - do nothing\n * @param sourceTileset - source root tileset JSON\n * @param sourceTile - source tile JSON that is supposed to has link to nested tileset\n * @param tilesetLoadOptions - load options for Tiles3DLoader\n * @returns nothing\n */\nexport const loadNestedTileset = async (\n sourceTileset: Tiles3DTilesetJSONPostprocessed | null,\n sourceTile: Tiles3DTileJSONPostprocessed,\n tilesetLoadOptions: Tiles3DLoaderOptions\n): Promise<void> => {\n const isTileset = isNestedTileset(sourceTile);\n if (!sourceTileset || !sourceTile.contentUrl || !isTileset) {\n return;\n }\n\n const loadOptions = {\n ...tilesetLoadOptions,\n [sourceTileset.loader.id]: {\n isTileset,\n assetGltfUpAxis: (sourceTileset.asset && sourceTileset.asset.gltfUpAxis) || 'Y'\n }\n };\n const tileContent = await loadFromArchive(\n sourceTile.contentUrl,\n sourceTileset.loader,\n loadOptions\n );\n\n if (tileContent.root) {\n sourceTile.children = [tileContent.root];\n }\n};\n\n/**\n * Load 3DTiles tile content, that includes glTF object\n * @param sourceTileset - source root tileset JSON\n * @param sourceTile - source tile JSON that has link to content data\n * @param tilesetLoadOptions - load options for Tiles3DLoader\n * @returns - 3DTiles tile content or null\n */\nexport const loadTile3DContent = async (\n sourceTileset: Tiles3DTilesetJSONPostprocessed | null,\n sourceTile: Tiles3DTileJSONPostprocessed,\n tilesetLoadOptions: Tiles3DLoaderOptions\n): Promise<Tiles3DTileContent | null> => {\n const isTileset = isNestedTileset(sourceTile);\n if (!sourceTileset || !sourceTile.contentUrl || isTileset) {\n return null;\n }\n\n const loadOptions = {\n ...tilesetLoadOptions,\n [sourceTileset.loader.id]: {\n ...(tilesetLoadOptions[sourceTileset.loader.id] || {}),\n isTileset,\n assetGltfUpAxis: (sourceTileset.asset && sourceTileset.asset.gltfUpAxis) || 'Y'\n }\n };\n const tileContent = await loadFromArchive(\n sourceTile.contentUrl,\n sourceTileset.loader,\n loadOptions\n );\n\n return tileContent;\n};\n\n/**\n * Load a resource with load options and .3tz format support\n * @param url - resource URL\n * @param loader - loader to parse data (Tiles3DLoader / CesiumIonLoader)\n * @param loadOptions - 3d-tiles loader options\n * @returns 3d-tiles resource\n */\nexport async function loadFromArchive(\n url: string,\n loader: LoaderWithParser,\n loadOptions: Tiles3DLoaderOptions\n) {\n const tz3UrlParts = url.split('.3tz');\n let filename: string | null;\n // No '.3tz'. The file will be loaded with global fetch function\n if (tz3UrlParts.length === 1) {\n filename = null;\n } else if (tz3UrlParts.length === 2) {\n filename = tz3UrlParts[1].slice(1);\n if (filename === '') {\n filename = 'tileset.json';\n }\n } else {\n throw new Error('Unexpected URL format');\n }\n if (filename) {\n const tz3Path = `${tz3UrlParts[0]}.3tz`;\n const fileSystem = new Tiles3DArchiveFileSystem(tz3Path);\n const content = await load(filename, loader, {\n ...loadOptions,\n fetch: fileSystem.fetch.bind(fileSystem)\n });\n await fileSystem.destroy();\n return content;\n }\n return await load(url, loader, loadOptions);\n}\n\n/**\n * Check if tile is nested tileset\n * @param tile - 3DTiles header data\n * @returns true if tile is nested tileset\n */\nexport function isNestedTileset(tile: Tiles3DTileJSONPostprocessed) {\n return tile?.type === 'json' || tile?.type === '3tz';\n}\n"],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ import WriteQueue from '../lib/utils/write-queue';
|
|
|
28
28
|
import { BROWSER_ERROR_MESSAGE } from '../constants';
|
|
29
29
|
import { createdStorageAttribute, createFieldAttribute, createPopupInfo, getAttributeType, getFieldAttributeType } from './helpers/feature-attributes';
|
|
30
30
|
import { NodeIndexDocument } from './helpers/node-index-document';
|
|
31
|
-
import { loadNestedTileset, loadTile3DContent } from './helpers/load-3d-tiles';
|
|
31
|
+
import { isNestedTileset, loadNestedTileset, loadTile3DContent, loadFromArchive } from './helpers/load-3d-tiles';
|
|
32
32
|
import { Matrix4 } from '@math.gl/core';
|
|
33
33
|
import { createBoundingVolume } from '@loaders.gl/tiles';
|
|
34
34
|
import { traverseDatasetWith } from './helpers/tileset-traversal';
|
|
@@ -164,7 +164,7 @@ export default class I3SConverter {
|
|
|
164
164
|
headers: preloadOptions.headers
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
-
this.sourceTileset = await
|
|
167
|
+
this.sourceTileset = await loadFromArchive(tilesetUrl, this.Loader, this.loadOptions);
|
|
168
168
|
const preprocessResult = await this.preprocessConversion();
|
|
169
169
|
if (preprocessResult) {
|
|
170
170
|
await this._createAndSaveTileset(outputPath, tilesetName);
|
|
@@ -227,7 +227,8 @@ export default class I3SConverter {
|
|
|
227
227
|
return true;
|
|
228
228
|
}
|
|
229
229
|
async analyzeTile(sourceTile, traversalProps) {
|
|
230
|
-
|
|
230
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
231
|
+
if (isTileset) {
|
|
231
232
|
await loadNestedTileset(this.sourceTileset, sourceTile, this.loadOptions);
|
|
232
233
|
return null;
|
|
233
234
|
}
|
|
@@ -345,8 +346,9 @@ export default class I3SConverter {
|
|
|
345
346
|
}
|
|
346
347
|
}
|
|
347
348
|
async convertTile(sourceTile, traversalProps) {
|
|
348
|
-
|
|
349
|
-
|
|
349
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
350
|
+
if (isTileset || sourceTile.type === 'empty') {
|
|
351
|
+
if (isTileset) {
|
|
350
352
|
if (sourceTile.id) {
|
|
351
353
|
console.log("[load]: ".concat(sourceTile.id));
|
|
352
354
|
}
|