1- import { load } from '@loaders.gl/core' ;
1+ import { load } from '@loaders.gl/core' ;
22import { GLTFLoader } from '@loaders.gl/gltf' ;
33import { groupBuffersByType } from './group' ;
44import { applyStyle } from './style' ;
@@ -15,37 +15,44 @@ self.onmessage = (message: MessageEvent) => {
1515
1616async function loadModel ( message : any ) {
1717 const { url, idOffset, color, styles } = message . data as MetacityWorkerInput ;
18-
1918 const colorArr = Utils . Color . colorHexToArr ( color ) ;
20- const gltf = await load ( url , GLTFLoader ) ;
21- const groups = groupBuffersByType ( gltf ) ;
22- const useMetadata = styles !== undefined && styles . length > 0 ;
23- const meshASM = new Utils . Assemblers . MeshAssembler ( idOffset , useMetadata ) ;
24- for ( let i = 0 ; i < groups . meshes . length ; i ++ ) {
25- const mesh = groups . meshes [ i ] ;
26- meshASM . addMesh ( mesh . positions , colorArr , mesh . meta ) ;
27- }
28-
29- const pointsASM = new Utils . Assemblers . PointsAssembler ( meshASM . idCounter ) ;
30- for ( let i = 0 ; i < groups . points . length ; i ++ ) {
31- const points = groups . points [ i ] ;
32- pointsASM . addPoints ( points . positions , points . meta ) ;
33- }
34-
35- const pointBuffers = pointsASM . toBuffers ( ) ;
36- const meshBuffers = meshASM . toBuffers ( ) ;
37-
38- if ( styles . length > 0 && meshBuffers ) {
39- applyStyle ( styles , color , meshBuffers . ids ! , meshBuffers . colors , meshBuffers . metadata ! ) ;
40- }
4119
42- const transferables = meshASM . pickTransferables ( meshBuffers ) ;
43- transferables . push ( ...pointsASM . pickTransferables ( pointBuffers ) ) ;
4420
45- self . postMessage ( {
46- mesh : meshBuffers ,
47- points : pointBuffers
48- } , transferables ) ;
21+ try {
22+ const gltf = await load ( url , GLTFLoader ) ;
23+ const groups = groupBuffersByType ( gltf ) ;
24+ const useMetadata = styles !== undefined && styles . length > 0 ;
25+ const meshASM = new Utils . Assemblers . MeshAssembler ( idOffset , useMetadata ) ;
26+ for ( let i = 0 ; i < groups . meshes . length ; i ++ ) {
27+ const mesh = groups . meshes [ i ] ;
28+ mesh . meta [ "url" ] = url ;
29+ meshASM . addMesh ( mesh . positions , colorArr , mesh . meta ) ;
30+ }
31+
32+ const pointsASM = new Utils . Assemblers . PointsAssembler ( meshASM . idCounter ) ;
33+ for ( let i = 0 ; i < groups . points . length ; i ++ ) {
34+ const points = groups . points [ i ] ;
35+ points . meta [ "url" ] = url ;
36+ pointsASM . addPoints ( points . positions , points . meta ) ;
37+ }
38+
39+ const pointBuffers = pointsASM . toBuffers ( ) ;
40+ const meshBuffers = meshASM . toBuffers ( ) ;
41+
42+ if ( styles . length > 0 && meshBuffers ) {
43+ applyStyle ( styles , color , meshBuffers . ids ! , meshBuffers . colors , meshBuffers . metadata ! ) ;
44+ }
45+
46+ const transferables = meshASM . pickTransferables ( meshBuffers ) ;
47+ transferables . push ( ...pointsASM . pickTransferables ( pointBuffers ) ) ;
48+
49+ self . postMessage ( {
50+ mesh : meshBuffers ,
51+ points : pointBuffers
52+ } , transferables ) ;
53+ } catch ( e ) {
54+ console . error ( e ) ;
55+ }
4956
5057}
5158
0 commit comments