Buckets:
| ; | |
| Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); | |
| const THREE = require("three"); | |
| const ColladaLoader = require("./ColladaLoader.cjs"); | |
| const fflate$1 = require("fflate"); | |
| class KMZLoader extends THREE.Loader { | |
| constructor(manager) { | |
| super(manager); | |
| } | |
| load(url, onLoad, onProgress, onError) { | |
| const scope = this; | |
| const loader = new THREE.FileLoader(scope.manager); | |
| loader.setPath(scope.path); | |
| loader.setResponseType("arraybuffer"); | |
| loader.setRequestHeader(scope.requestHeader); | |
| loader.setWithCredentials(scope.withCredentials); | |
| loader.load( | |
| url, | |
| function(text) { | |
| try { | |
| onLoad(scope.parse(text)); | |
| } catch (e) { | |
| if (onError) { | |
| onError(e); | |
| } else { | |
| console.error(e); | |
| } | |
| scope.manager.itemError(url); | |
| } | |
| }, | |
| onProgress, | |
| onError | |
| ); | |
| } | |
| parse(data) { | |
| function findFile(url) { | |
| for (const path in zip) { | |
| if (path.substr(-url.length) === url) { | |
| return zip[path]; | |
| } | |
| } | |
| } | |
| const manager = new THREE.LoadingManager(); | |
| manager.setURLModifier(function(url) { | |
| const image = findFile(url); | |
| if (image) { | |
| console.log("Loading", url); | |
| const blob = new Blob([image.buffer], { type: "application/octet-stream" }); | |
| return URL.createObjectURL(blob); | |
| } | |
| return url; | |
| }); | |
| const zip = fflate$1.unzipSync(new Uint8Array(data)); | |
| if (zip["doc.kml"]) { | |
| const xml = new DOMParser().parseFromString(fflate.strFromU8(zip["doc.kml"]), "application/xml"); | |
| const model = xml.querySelector("Placemark Model Link href"); | |
| if (model) { | |
| const loader = new ColladaLoader.ColladaLoader(manager); | |
| return loader.parse(fflate.strFromU8(zip[model.textContent])); | |
| } | |
| } else { | |
| console.warn("KMZLoader: Missing doc.kml file."); | |
| for (const path in zip) { | |
| const extension = path.split(".").pop().toLowerCase(); | |
| if (extension === "dae") { | |
| const loader = new ColladaLoader.ColladaLoader(manager); | |
| return loader.parse(fflate.strFromU8(zip[path])); | |
| } | |
| } | |
| } | |
| console.error("KMZLoader: Couldn't find .dae file."); | |
| return { scene: new THREE.Group() }; | |
| } | |
| } | |
| exports.KMZLoader = KMZLoader; | |
| //# sourceMappingURL=KMZLoader.cjs.map | |
Xet Storage Details
- Size:
- 2.4 kB
- Xet hash:
- 30e57335d3e648a5309dad938e1b95d85279b3f23073307bd1aac8e4d6880423
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.