@twinmatrix/spatialverse-sdk-web 0.0.2 → 0.0.4

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.
Files changed (143) hide show
  1. package/lib/cjs/index.js +9 -9
  2. package/lib/cjs/index.js.map +1 -1
  3. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +213 -294
  4. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
  5. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +40 -41
  6. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
  7. package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js +170 -196
  8. package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
  9. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +167 -215
  10. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
  11. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +28 -30
  12. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
  13. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +861 -1170
  14. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
  15. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +166 -159
  16. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
  17. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js +6 -6
  18. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js.map +1 -1
  19. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +6 -6
  20. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
  21. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js +3 -3
  22. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js.map +1 -1
  23. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +523 -610
  24. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
  25. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +149 -154
  26. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
  27. package/lib/cjs/meta-atlas-sdk/customStyles.js +2 -2
  28. package/lib/cjs/meta-atlas-sdk/customStyles.js.map +1 -1
  29. package/lib/cjs/meta-atlas-sdk/customerLayer.js +15 -29
  30. package/lib/cjs/meta-atlas-sdk/customerLayer.js.map +1 -1
  31. package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js +5 -5
  32. package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js.map +1 -1
  33. package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js +809 -1033
  34. package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
  35. package/lib/cjs/meta-atlas-sdk/utils/helpers.js +32 -49
  36. package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
  37. package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +21 -34
  38. package/lib/cjs/meta-atlas-sdk/utils/local-storage.js.map +1 -1
  39. package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js +6 -6
  40. package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js.map +1 -1
  41. package/lib/cjs/meta-atlas-sdk/utils/routing-store.js +6 -6
  42. package/lib/cjs/meta-atlas-sdk/utils/routing-store.js.map +1 -1
  43. package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js +363 -491
  44. package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
  45. package/lib/cjs/react/MetaAtlasMap.js +127 -0
  46. package/lib/cjs/react/MetaAtlasMap.js.map +1 -0
  47. package/lib/cjs/react/hooks/useDrawing/index.js +17 -18
  48. package/lib/cjs/react/hooks/useDrawing/index.js.map +1 -1
  49. package/lib/cjs/react/hooks/useFocus/index.js +48 -55
  50. package/lib/cjs/react/hooks/useFocus/index.js.map +1 -1
  51. package/lib/cjs/react/hooks/useMapEvents/index.js +40 -47
  52. package/lib/cjs/react/hooks/useMapEvents/index.js.map +1 -1
  53. package/lib/cjs/react/hooks/useMapOverlays/index.js +20 -21
  54. package/lib/cjs/react/hooks/useMapOverlays/index.js.map +1 -1
  55. package/lib/cjs/react/hooks/useMetaAtlas/index.js +77 -95
  56. package/lib/cjs/react/hooks/useMetaAtlas/index.js.map +1 -1
  57. package/lib/cjs/react/hooks/useMetaAtlas.js +78 -96
  58. package/lib/cjs/react/hooks/useMetaAtlas.js.map +1 -1
  59. package/lib/cjs/react/hooks/useRouting/index.js +21 -20
  60. package/lib/cjs/react/hooks/useRouting/index.js.map +1 -1
  61. package/lib/cjs/react/hooks/useSearch/index.js +35 -34
  62. package/lib/cjs/react/hooks/useSearch/index.js.map +1 -1
  63. package/lib/cjs/react/hooks/useStampRally/index.js +26 -23
  64. package/lib/cjs/react/hooks/useStampRally/index.js.map +1 -1
  65. package/lib/cjs/react/hooks/useStampRally/utils.js +2 -2
  66. package/lib/cjs/react/hooks/useStampRally/utils.js.map +1 -1
  67. package/lib/cjs/react/index.js +31 -31
  68. package/lib/cjs/react/index.js.map +1 -1
  69. package/lib/cjs/react/stores/useMapDataStore.js +47 -62
  70. package/lib/cjs/react/stores/useMapDataStore.js.map +1 -1
  71. package/lib/cjs/react/stores/useMetaAtlasStore.js +27 -40
  72. package/lib/cjs/react/stores/useMetaAtlasStore.js.map +1 -1
  73. package/lib/esm/index.js +3 -7
  74. package/lib/esm/index.js.map +1 -1
  75. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +4 -3
  76. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
  77. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +14 -12
  78. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
  79. package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js +204 -200
  80. package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
  81. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +6 -6
  82. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
  83. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +4 -3
  84. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
  85. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +53 -42
  86. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
  87. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +18 -16
  88. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
  89. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +3 -3
  90. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
  91. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +73 -79
  92. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
  93. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +16 -15
  94. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
  95. package/lib/esm/meta-atlas-sdk/customerLayer.js +4 -1
  96. package/lib/esm/meta-atlas-sdk/customerLayer.js.map +1 -1
  97. package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js +148 -124
  98. package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
  99. package/lib/esm/meta-atlas-sdk/utils/helpers.js +4 -2
  100. package/lib/esm/meta-atlas-sdk/utils/helpers.js.map +1 -1
  101. package/lib/esm/meta-atlas-sdk/utils/local-storage.js +6 -1
  102. package/lib/esm/meta-atlas-sdk/utils/local-storage.js.map +1 -1
  103. package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js +115 -109
  104. package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
  105. package/lib/esm/react/MetaAtlasMap.js +120 -0
  106. package/lib/esm/react/MetaAtlasMap.js.map +1 -0
  107. package/lib/esm/react/hooks/useDrawing/index.js +2 -2
  108. package/lib/esm/react/hooks/useDrawing/index.js.map +1 -1
  109. package/lib/esm/react/hooks/useFocus/index.js +4 -3
  110. package/lib/esm/react/hooks/useFocus/index.js.map +1 -1
  111. package/lib/esm/react/hooks/useMapEvents/index.js +9 -6
  112. package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
  113. package/lib/esm/react/hooks/useMapOverlays/index.js +2 -2
  114. package/lib/esm/react/hooks/useMapOverlays/index.js.map +1 -1
  115. package/lib/esm/react/hooks/useMetaAtlas/index.js +162 -60
  116. package/lib/esm/react/hooks/useMetaAtlas/index.js.map +1 -1
  117. package/lib/esm/react/hooks/useMetaAtlas.js +162 -60
  118. package/lib/esm/react/hooks/useMetaAtlas.js.map +1 -1
  119. package/lib/esm/react/hooks/useRouting/index.js +2 -2
  120. package/lib/esm/react/hooks/useRouting/index.js.map +1 -1
  121. package/lib/esm/react/hooks/useSearch/index.js +2 -2
  122. package/lib/esm/react/hooks/useSearch/index.js.map +1 -1
  123. package/lib/esm/react/hooks/useStampRally/index.js +15 -12
  124. package/lib/esm/react/hooks/useStampRally/index.js.map +1 -1
  125. package/lib/esm/react/hooks/useStampRally/utils.js +1 -1
  126. package/lib/esm/react/hooks/useStampRally/utils.js.map +1 -1
  127. package/lib/esm/react/index.js +11 -15
  128. package/lib/esm/react/index.js.map +1 -1
  129. package/lib/esm/react/stores/useMapDataStore.js +17 -21
  130. package/lib/esm/react/stores/useMapDataStore.js.map +1 -1
  131. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts +30 -0
  132. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts.map +1 -0
  133. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts +5 -0
  134. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts.map +1 -0
  135. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts +21 -0
  136. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts.map +1 -0
  137. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts +27 -0
  138. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts.map +1 -0
  139. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts +18 -0
  140. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts.map +1 -0
  141. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts +37 -0
  142. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts.map +1 -0
  143. package/package.json +10 -7
@@ -1 +1 @@
1
- {"version":3,"file":"CustomThreeJsWrapper.js","names":["ACESFilmicToneMapping","AmbientLight","DirectionalLight","HemisphereLight","Mesh","Object3D","PerspectiveCamera","Scene","WebGLRenderer","Vector2","Vector3","Shape","Path","ExtrudeGeometry","Box3","SRGBColorSpace","constants","CameraSync","projectToWorld","toDecimal","CustomThreeJSWrapper","constructor","map","scene","c","getCanvas","gl","getContext","isWebglSupported","console","error","renderer","alpha","antialias","preserveDrawingBuffer","canvas","context","setPixelRatio","window","devicePixelRatio","setSize","clientWidth","clientHeight","autoClear","toneMapping","outputColorSpace","fov","FOV_DEGREES","h","w","camera","cameraSync","resize","aspect","updateProjectionMatrix","WebGLRenderingContext","document","createElement","getParameter","e","repaint","clear","layerId","Promise","resolve","reject","objects","children","forEach","object","push","i","length","obj","layers","remove","clearMeshes","type","log","filter3DObjects","whatTaxonomies","Array","isArray","visible","includes","userData","whatDimension","add","setEnvironment","dirLight","position","set","castShadow","hemiLight","ambientLight","buildPoints","coords","initCoords","points","init","pos","x","y","buildGeometry","shape","settings","geometry","computeBoundingBox","buildShape","holes","extrusion","opt","coordinates","geometryOptions","mesh","materials","centerMesh","bbox","copy","boundingBox","applyMatrix4","matrixWorld","center","getCenter","dummy","localToWorld","diff","clone","sub","translate","dispose","target","material","_isDisposed","removeFromParent","disposeObject","traverse","child","disposeMaterial","disposeGeometry","disposeTexture","requestAnimationFrame","parent","texture","update","updateMatrixWorld","resetState","render"],"sources":["../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.ts"],"sourcesContent":["import { Map } from 'maplibre-gl';\nimport {\n ACESFilmicToneMapping,\n AmbientLight,\n DataTexture,\n DirectionalLight,\n HemisphereLight,\n Mesh,\n Object3D,\n PerspectiveCamera,\n Scene,\n WebGLRenderer,\n Vector2,\n Vector3,\n Shape,\n Path,\n ExtrudeGeometry,\n Box3,\n BoxGeometry,\n MeshBasicMaterial,\n SRGBColorSpace\n} from 'three';\nimport constants from './utility/constants.js';\nimport CameraSync from './utility/CameraSync.js';\nimport { projectToWorld, toDecimal } from './utility/utils.js';\n\nclass CustomThreeJSWrapper {\n map;\n scene;\n camera;\n renderer;\n cameraSync;\n fov;\n\n constructor(map) {\n this.scene = new Scene();\n this.map = map;\n\n const c = map?.getCanvas() as HTMLCanvasElement;\n const gl = c?.getContext('webgl') || c?.getContext('webgl2');\n\n if (!gl && !this.isWebglSupported()) {\n console.error(map.getCanvas(), 'WebGL 2 is not supported in this environment');\n return;\n }\n\n // Initialize the WebGLRenderer without explicitly passing the WebGL 1 context\n this.renderer = new WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: false,\n canvas: map.getCanvas(),\n context: gl\n });\n\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setSize(this.map.getCanvas().clientWidth, this.map.getCanvas().clientHeight);\n this.renderer.autoClear = false;\n this.renderer.toneMapping = ACESFilmicToneMapping;\n this.renderer.outputColorSpace = SRGBColorSpace;\n this.fov = constants.FOV_DEGREES;\n\n const h = this.map.getCanvas().clientHeight;\n const w = this.map.getCanvas().clientWidth;\n\n this.camera = new PerspectiveCamera(this.fov, w / h, 0.1, 1000);\n\n this.cameraSync = new CameraSync(map, this.camera, this.scene);\n }\n\n resize() {\n const w = this.map.getCanvas().clientWidth;\n const h = this.map.getCanvas().clientHeight;\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n }\n\n isWebglSupported() {\n if (window.WebGLRenderingContext) {\n const canvas = document.createElement('canvas');\n try {\n // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument\n // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n // for more details.\n const context = canvas.getContext('webgl2') || canvas.getContext('webgl');\n if (context && typeof context.getParameter == 'function') {\n return true;\n }\n } catch (e) {\n // WebGL is supported, but disabled\n }\n return false;\n }\n // WebGL not supported\n return false;\n }\n\n repaint() {\n this.map.repaint = true;\n }\n\n async clear(layerId = null) {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n objects.push(object);\n });\n for (let i = 0; i < objects.length; i++) {\n const obj = objects[i];\n //if layerId, check the layer to remove, otherwise always remove\n if (obj.layers === layerId || !layerId) {\n this.remove(obj);\n }\n }\n\n resolve('clear');\n });\n }\n\n async clearMeshes() {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') objects.push(object);\n });\n console.log('Mesh Objects:', objects);\n for (let i = 0; i < objects.length; i++) {\n this.remove(objects[i]);\n }\n\n resolve('clear');\n });\n }\n\n filter3DObjects(whatTaxonomies: string[]) {\n if (!Array.isArray(whatTaxonomies)) return;\n if (whatTaxonomies.length === 0) {\n this.scene.children.forEach(function (object) {\n object.visible = true;\n });\n } else {\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') {\n if (whatTaxonomies.includes(object.userData.whatDimension)) {\n object.visible = false;\n } else {\n object.visible = true;\n }\n }\n });\n }\n }\n\n add(object) {\n this.scene.add(object);\n }\n\n setEnvironment() {\n const dirLight = new DirectionalLight(0xffffff, 2);\n dirLight.position.set(10, 10, 10);\n dirLight.castShadow = true;\n const hemiLight = new HemisphereLight('white', 'white', 1.5);\n const ambientLight = new AmbientLight('white', 1);\n this.scene.add(dirLight);\n this.scene.add(hemiLight);\n this.scene.add(ambientLight);\n }\n\n buildPoints(coords, initCoords) {\n const points = [];\n const init = projectToWorld([initCoords[0][0], initCoords[0][1], 0]);\n for (let i = 0; i < coords.length; i++) {\n const pos = projectToWorld([coords[i][0], coords[i][1], 0]);\n points.push(new Vector2(toDecimal(pos.x - init.x, 9), toDecimal(pos.y - init.y, 9)));\n }\n return points;\n }\n\n buildGeometry(shape, settings) {\n const geometry = new ExtrudeGeometry(shape, settings);\n geometry.computeBoundingBox();\n return geometry;\n }\n\n buildShape(coords: any) {\n if (coords[0] instanceof (Vector2 || Vector3)) return new Shape(coords);\n let shape = new Shape();\n for (let i = 0; i < coords.length; i++) {\n if (i === 0) {\n shape = new Shape(this.buildPoints(coords[0], coords[0]));\n } else {\n shape.holes.push(new Path(this.buildPoints(coords[i], coords[0])));\n }\n }\n return shape;\n }\n\n extrusion(opt: any) {\n const shape = this.buildShape(opt.coordinates);\n const geometry = this.buildGeometry(shape, opt.geometryOptions);\n const mesh = new Mesh(geometry, opt.materials);\n\n if (!opt.visible) mesh.visible = false;\n\n return mesh;\n }\n\n centerMesh(mesh) {\n // Compute the bounding box\n const bbox = new Box3();\n mesh.geometry.computeBoundingBox();\n bbox.copy(mesh.geometry.boundingBox).applyMatrix4(mesh.matrixWorld);\n\n // Get the center of the bounding box\n let center = new Vector3();\n bbox.getCenter(center);\n\n // Create a dummy object\n const dummy = new Object3D();\n\n // Attach mesh to dummy\n dummy.add(mesh);\n\n center = mesh.localToWorld(center);\n // const geometry = new BoxGeometry( 0.25, 0.25, 0.25 );\n // const material = new MeshBasicMaterial( {color: 0xff0000} );\n // const cube = new Mesh( geometry, material );\n // cube.position.set(center.x, center.y, center.z);\n // this.add( cube );\n // // Move the mesh within the dummy\n const diff = mesh.position.clone().sub(center);\n mesh.geometry.translate(diff.x, diff.y, 0);\n\n return dummy; // Return the new parent object\n }\n\n dispose(target) {\n if (target instanceof Mesh) {\n // If the target is a Mesh\n // Dispose materials and geometry of the mesh\n if (target.material) {\n if (typeof target.material.dispose === 'function' && !target.material._isDisposed) {\n target.material.dispose();\n target.material._isDisposed = true;\n }\n target.material = null;\n }\n if (target.geometry) {\n if (typeof target.geometry.dispose === 'function' && !target.geometry._isDisposed) {\n target.geometry.dispose();\n target.geometry._isDisposed = true;\n }\n target.geometry = null;\n }\n } else if (target instanceof Object3D) {\n // If the target is an Object3D\n target.removeFromParent();\n this.disposeObject(target);\n }\n }\n\n disposeObject(object) {\n object.traverse(child => {\n if (child instanceof Mesh && child.material) {\n if (Array.isArray(child.material)) {\n child.material.forEach(material => {\n this.disposeMaterial(material);\n });\n } else {\n this.disposeMaterial(child.material);\n }\n }\n if (child instanceof Mesh && child.geometry) {\n this.disposeGeometry(child.geometry);\n }\n if (child instanceof Mesh && child.material && child.material.map) {\n this.disposeTexture(child.material.map);\n }\n requestAnimationFrame(() => (child.children.length = 0));\n });\n\n if (object.parent) {\n object.parent.remove(object);\n }\n }\n\n disposeMaterial(material) {\n if (material.dispose) {\n material.dispose();\n }\n }\n\n // to dispose of a texture\n disposeTexture(texture) {\n if (texture.dispose) {\n texture.dispose();\n }\n }\n\n // to dispose of a geometry\n disposeGeometry(geometry) {\n if (geometry.dispose) {\n geometry.dispose();\n }\n }\n\n remove(object) {\n this.scene.remove(object);\n object = null;\n }\n\n update() {\n if (this.map.repaint) this.map.repaint = false;\n this.scene.updateMatrixWorld(true);\n\n // Render the scene and repaint the map\n this.renderer.resetState(); //update threejs r126\n this.renderer.render(this.scene, this.camera);\n }\n}\n\nexport default CustomThreeJSWrapper;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CustomThreeJsWrapper.js","names":["ACESFilmicToneMapping","AmbientLight","DirectionalLight","HemisphereLight","Mesh","Object3D","PerspectiveCamera","Scene","WebGLRenderer","Vector2","Vector3","Shape","Path","ExtrudeGeometry","Box3","SRGBColorSpace","constants","CameraSync","projectToWorld","toDecimal","CustomThreeJSWrapper","constructor","map","scene","c","getCanvas","gl","getContext","isWebglSupported","console","error","renderer","alpha","antialias","preserveDrawingBuffer","canvas","context","setPixelRatio","window","devicePixelRatio","setSize","clientWidth","clientHeight","autoClear","toneMapping","outputColorSpace","fov","FOV_DEGREES","h","w","camera","cameraSync","resize","aspect","updateProjectionMatrix","WebGLRenderingContext","document","createElement","getParameter","e","repaint","clear","layerId","arguments","length","undefined","Promise","resolve","reject","objects","children","forEach","object","push","i","obj","layers","remove","clearMeshes","type","log","filter3DObjects","whatTaxonomies","Array","isArray","visible","includes","userData","whatDimension","add","setEnvironment","dirLight","position","set","castShadow","hemiLight","ambientLight","buildPoints","coords","initCoords","points","init","pos","x","y","buildGeometry","shape","settings","geometry","computeBoundingBox","buildShape","holes","extrusion","opt","coordinates","geometryOptions","mesh","materials","centerMesh","bbox","copy","boundingBox","applyMatrix4","matrixWorld","center","getCenter","dummy","localToWorld","diff","clone","sub","translate","dispose","target","material","_isDisposed","removeFromParent","disposeObject","traverse","child","disposeMaterial","disposeGeometry","disposeTexture","requestAnimationFrame","parent","texture","update","updateMatrixWorld","resetState","render"],"sources":["../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.ts"],"sourcesContent":["import { Map } from 'maplibre-gl';\nimport {\n ACESFilmicToneMapping,\n AmbientLight,\n DataTexture,\n DirectionalLight,\n HemisphereLight,\n Mesh,\n Object3D,\n PerspectiveCamera,\n Scene,\n WebGLRenderer,\n Vector2,\n Vector3,\n Shape,\n Path,\n ExtrudeGeometry,\n Box3,\n BoxGeometry,\n MeshBasicMaterial,\n SRGBColorSpace\n} from 'three';\nimport constants from './utility/constants.js';\nimport CameraSync from './utility/CameraSync.js';\nimport { projectToWorld, toDecimal } from './utility/utils.js';\n\nclass CustomThreeJSWrapper {\n map;\n scene;\n camera;\n renderer;\n cameraSync;\n fov;\n\n constructor(map) {\n this.scene = new Scene();\n this.map = map;\n\n const c = map?.getCanvas() as HTMLCanvasElement;\n const gl = c?.getContext('webgl') || c?.getContext('webgl2');\n\n if (!gl && !this.isWebglSupported()) {\n console.error(map.getCanvas(), 'WebGL 2 is not supported in this environment');\n return;\n }\n\n // Initialize the WebGLRenderer without explicitly passing the WebGL 1 context\n this.renderer = new WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: false,\n canvas: map.getCanvas(),\n context: gl\n });\n\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setSize(this.map.getCanvas().clientWidth, this.map.getCanvas().clientHeight);\n this.renderer.autoClear = false;\n this.renderer.toneMapping = ACESFilmicToneMapping;\n this.renderer.outputColorSpace = SRGBColorSpace;\n this.fov = constants.FOV_DEGREES;\n\n const h = this.map.getCanvas().clientHeight;\n const w = this.map.getCanvas().clientWidth;\n\n this.camera = new PerspectiveCamera(this.fov, w / h, 0.1, 1000);\n\n this.cameraSync = new CameraSync(map, this.camera, this.scene);\n }\n\n resize() {\n const w = this.map.getCanvas().clientWidth;\n const h = this.map.getCanvas().clientHeight;\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n }\n\n isWebglSupported() {\n if (window.WebGLRenderingContext) {\n const canvas = document.createElement('canvas');\n try {\n // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument\n // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n // for more details.\n const context = canvas.getContext('webgl2') || canvas.getContext('webgl');\n if (context && typeof context.getParameter == 'function') {\n return true;\n }\n } catch (e) {\n // WebGL is supported, but disabled\n }\n return false;\n }\n // WebGL not supported\n return false;\n }\n\n repaint() {\n this.map.repaint = true;\n }\n\n async clear(layerId = null) {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n objects.push(object);\n });\n for (let i = 0; i < objects.length; i++) {\n const obj = objects[i];\n //if layerId, check the layer to remove, otherwise always remove\n if (obj.layers === layerId || !layerId) {\n this.remove(obj);\n }\n }\n\n resolve('clear');\n });\n }\n\n async clearMeshes() {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') objects.push(object);\n });\n console.log('Mesh Objects:', objects);\n for (let i = 0; i < objects.length; i++) {\n this.remove(objects[i]);\n }\n\n resolve('clear');\n });\n }\n\n filter3DObjects(whatTaxonomies: string[]) {\n if (!Array.isArray(whatTaxonomies)) return;\n if (whatTaxonomies.length === 0) {\n this.scene.children.forEach(function (object) {\n object.visible = true;\n });\n } else {\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') {\n if (whatTaxonomies.includes(object.userData.whatDimension)) {\n object.visible = false;\n } else {\n object.visible = true;\n }\n }\n });\n }\n }\n\n add(object) {\n this.scene.add(object);\n }\n\n setEnvironment() {\n const dirLight = new DirectionalLight(0xffffff, 2);\n dirLight.position.set(10, 10, 10);\n dirLight.castShadow = true;\n const hemiLight = new HemisphereLight('white', 'white', 1.5);\n const ambientLight = new AmbientLight('white', 1);\n this.scene.add(dirLight);\n this.scene.add(hemiLight);\n this.scene.add(ambientLight);\n }\n\n buildPoints(coords, initCoords) {\n const points = [];\n const init = projectToWorld([initCoords[0][0], initCoords[0][1], 0]);\n for (let i = 0; i < coords.length; i++) {\n const pos = projectToWorld([coords[i][0], coords[i][1], 0]);\n points.push(new Vector2(toDecimal(pos.x - init.x, 9), toDecimal(pos.y - init.y, 9)));\n }\n return points;\n }\n\n buildGeometry(shape, settings) {\n const geometry = new ExtrudeGeometry(shape, settings);\n geometry.computeBoundingBox();\n return geometry;\n }\n\n buildShape(coords: any) {\n if (coords[0] instanceof (Vector2 || Vector3)) return new Shape(coords);\n let shape = new Shape();\n for (let i = 0; i < coords.length; i++) {\n if (i === 0) {\n shape = new Shape(this.buildPoints(coords[0], coords[0]));\n } else {\n shape.holes.push(new Path(this.buildPoints(coords[i], coords[0])));\n }\n }\n return shape;\n }\n\n extrusion(opt: any) {\n const shape = this.buildShape(opt.coordinates);\n const geometry = this.buildGeometry(shape, opt.geometryOptions);\n const mesh = new Mesh(geometry, opt.materials);\n\n if (!opt.visible) mesh.visible = false;\n\n return mesh;\n }\n\n centerMesh(mesh) {\n // Compute the bounding box\n const bbox = new Box3();\n mesh.geometry.computeBoundingBox();\n bbox.copy(mesh.geometry.boundingBox).applyMatrix4(mesh.matrixWorld);\n\n // Get the center of the bounding box\n let center = new Vector3();\n bbox.getCenter(center);\n\n // Create a dummy object\n const dummy = new Object3D();\n\n // Attach mesh to dummy\n dummy.add(mesh);\n\n center = mesh.localToWorld(center);\n // const geometry = new BoxGeometry( 0.25, 0.25, 0.25 );\n // const material = new MeshBasicMaterial( {color: 0xff0000} );\n // const cube = new Mesh( geometry, material );\n // cube.position.set(center.x, center.y, center.z);\n // this.add( cube );\n // // Move the mesh within the dummy\n const diff = mesh.position.clone().sub(center);\n mesh.geometry.translate(diff.x, diff.y, 0);\n\n return dummy; // Return the new parent object\n }\n\n dispose(target) {\n if (target instanceof Mesh) {\n // If the target is a Mesh\n // Dispose materials and geometry of the mesh\n if (target.material) {\n if (typeof target.material.dispose === 'function' && !target.material._isDisposed) {\n target.material.dispose();\n target.material._isDisposed = true;\n }\n target.material = null;\n }\n if (target.geometry) {\n if (typeof target.geometry.dispose === 'function' && !target.geometry._isDisposed) {\n target.geometry.dispose();\n target.geometry._isDisposed = true;\n }\n target.geometry = null;\n }\n } else if (target instanceof Object3D) {\n // If the target is an Object3D\n target.removeFromParent();\n this.disposeObject(target);\n }\n }\n\n disposeObject(object) {\n object.traverse(child => {\n if (child instanceof Mesh && child.material) {\n if (Array.isArray(child.material)) {\n child.material.forEach(material => {\n this.disposeMaterial(material);\n });\n } else {\n this.disposeMaterial(child.material);\n }\n }\n if (child instanceof Mesh && child.geometry) {\n this.disposeGeometry(child.geometry);\n }\n if (child instanceof Mesh && child.material && child.material.map) {\n this.disposeTexture(child.material.map);\n }\n requestAnimationFrame(() => (child.children.length = 0));\n });\n\n if (object.parent) {\n object.parent.remove(object);\n }\n }\n\n disposeMaterial(material) {\n if (material.dispose) {\n material.dispose();\n }\n }\n\n // to dispose of a texture\n disposeTexture(texture) {\n if (texture.dispose) {\n texture.dispose();\n }\n }\n\n // to dispose of a geometry\n disposeGeometry(geometry) {\n if (geometry.dispose) {\n geometry.dispose();\n }\n }\n\n remove(object) {\n this.scene.remove(object);\n object = null;\n }\n\n update() {\n if (this.map.repaint) this.map.repaint = false;\n this.scene.updateMatrixWorld(true);\n\n // Render the scene and repaint the map\n this.renderer.resetState(); //update threejs r126\n this.renderer.render(this.scene, this.camera);\n }\n}\n\nexport default CustomThreeJSWrapper;\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import * as THREE from 'three';
2
2
  import { Euler, Vector3 } from 'three';
3
- import constants from './constants';
3
+ import constants from "./constants.js";
4
4
  import gsap from 'gsap';
5
5
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
6
6
  export function projectToWorld(coords) {
@@ -32,17 +32,19 @@ export function toDecimal(n, d) {
32
32
  export function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {
33
33
  return new Promise((resolve, reject) => {
34
34
  try {
35
- const modelLoadPromises = models.map(({
36
- id,
37
- modelUrl,
38
- coords,
39
- rotation,
40
- scale,
41
- instanced
42
- }) => {
35
+ const modelLoadPromises = models.map(_ref => {
36
+ let {
37
+ id,
38
+ modelUrl,
39
+ coords,
40
+ rotation,
41
+ scale,
42
+ instanced
43
+ } = _ref;
43
44
  return new Promise((modelResolve, modelReject) => {
44
45
  const loader = new GLTFLoader();
45
46
  loader.load(modelUrl, gltf => {
47
+ var _modelMap$get$visible, _modelMap$get;
46
48
  const model = gltf.scene;
47
49
  model.traverse(child => {
48
50
  if (child instanceof THREE.Mesh) {
@@ -62,12 +64,12 @@ export function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {
62
64
  model.up.set(0, 0, 1);
63
65
  model.rotation.set(rotation[0], rotation[1], rotation[2]);
64
66
  model.scale.set(scale[0], scale[1], scale[2]);
65
- model.visible = modelMap.get(id)?.visible ?? true;
67
+ model.visible = (_modelMap$get$visible = (_modelMap$get = modelMap.get(id)) === null || _modelMap$get === void 0 ? void 0 : _modelMap$get.visible) !== null && _modelMap$get$visible !== void 0 ? _modelMap$get$visible : true;
66
68
  wrapper.add(model);
67
69
  modelMap.set(id, model);
68
70
  modelResolve(modelMap);
69
71
  }, undefined, error => {
70
- console.error(`Error loading model ${id}:`, error);
72
+ console.error("Error loading model ".concat(id, ":"), error);
71
73
  modelReject(error);
72
74
  });
73
75
  });
@@ -109,7 +111,7 @@ export function toggleModelVisibility(modelMap, modelId, isVisible) {
109
111
  }
110
112
  });
111
113
  } else if (child.isMesh) {
112
- console.error(`GSAP Animation already running for child id ${id}!`);
114
+ console.error("GSAP Animation already running for child id ".concat(id, "!"));
113
115
  }
114
116
  }
115
117
  });
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["THREE","Euler","Vector3","constants","gsap","GLTFLoader","projectToWorld","coords","projected","MERCATOR_A","DEG2RAD","PROJECTION_WORLD_SIZE","Math","log","tan","PI","push","pixelsPerMeter","projectedUnitsPerMeter","result","latitude","abs","WORLD_SIZE","cos","EARTH_CIRCUMFERENCE","unprojectFromWorld","worldUnits","unprojected","x","atan","exp","y","height","z","toDecimal","n","d","Number","toFixed","addModelsToMap","wrapper","map","models","modelMap","onModelsLoaded","Promise","resolve","reject","modelLoadPromises","id","modelUrl","rotation","scale","instanced","modelResolve","modelReject","loader","load","gltf","model","scene","traverse","child","Mesh","Array","isArray","material","forEach","mat","side","DoubleSide","needsUpdate","worldPosition","position","set","up","visible","get","add","undefined","error","console","addLayer","type","renderingMode","onAdd","all","then","res","catch","render","toggleModelVisibility","modelId","isVisible","isAnimating","isMesh","transparent","to","opacity","duration","ease","onComplete","bearingToRotation","bearing","threeRotation","rotationToBearing","quaternion","euler","setFromQuaternion","objectDirectionToBearing","object","forward","getWorldDirection","atan2"],"sources":["../../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.ts"],"sourcesContent":["import * as THREE from 'three';\nimport {Quaternion, Euler, Vector3, InstancedMesh, Object3D} from 'three';\nimport constants from './constants';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\nimport { LngLatLike } from 'maplibre-gl';\nimport { Position } from 'geojson';\nimport gsap from 'gsap';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { AmbientLight, DirectionalLight } from 'three';\nimport CustomThreeJSWrapper from '../CustomThreeJsWrapper.js';\n\nexport function projectToWorld(coords: Position) {\n var projected = [\n -constants.MERCATOR_A *\n constants.DEG2RAD *\n coords[0] *\n constants.PROJECTION_WORLD_SIZE,\n -constants.MERCATOR_A *\n Math.log(Math.tan(Math.PI * 0.25 + 0.5 * constants.DEG2RAD * coords[1])) *\n constants.PROJECTION_WORLD_SIZE,\n ];\n\n if (!coords[2]) projected.push(0);\n else {\n var pixelsPerMeter = projectedUnitsPerMeter(coords[1]);\n projected.push(coords[2] * pixelsPerMeter);\n }\n\n var result = new Vector3(projected[0], projected[1], projected[2]);\n\n return result;\n}\n\nfunction projectedUnitsPerMeter(latitude: number) {\n return Math.abs(\n constants.WORLD_SIZE /\n Math.cos(constants.DEG2RAD * latitude) /\n constants.EARTH_CIRCUMFERENCE\n );\n}\n\nexport function unprojectFromWorld(worldUnits: Vector3) {\n var unprojected = [\n -worldUnits.x /\n (constants.MERCATOR_A *\n constants.DEG2RAD *\n constants.PROJECTION_WORLD_SIZE),\n (2 *\n (Math.atan(\n Math.exp(\n worldUnits.y /\n (constants.PROJECTION_WORLD_SIZE * -constants.MERCATOR_A)\n )\n ) -\n Math.PI / 4)) /\n constants.DEG2RAD,\n ];\n\n var pixelsPerMeter = projectedUnitsPerMeter(unprojected[1]);\n\n // z dimension\n var height = worldUnits.z || 0;\n unprojected.push(height / pixelsPerMeter);\n\n return unprojected as LngLatLike;\n}\n\nexport function toDecimal (n, d) {\n return Number(n.toFixed(d));\n}\n\n// RF: TO BE REMOVED. ModelLoader component can be used to load 3D models.\nexport function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {\n return new Promise((resolve, reject) => {\n try {\n const modelLoadPromises = models.map(({ id, modelUrl, coords, rotation, scale, instanced }) => {\n return new Promise((modelResolve, modelReject) => {\n const loader = new GLTFLoader();\n loader.load(\n modelUrl,\n (gltf) => {\n const model = gltf.scene;\n model.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n if (Array.isArray(child.material)) {\n child.material.forEach((mat) => {\n mat.side = THREE.DoubleSide;\n mat.needsUpdate = true;\n });\n } else {\n child.material.side = THREE.DoubleSide;\n child.material.needsUpdate = true;\n }\n }\n });\n \n const worldPosition = projectToWorld(coords);\n model.position.set(worldPosition.x, worldPosition.y, 0);\n model.up.set(0, 0, 1);\n model.rotation.set(rotation[0], rotation[1], rotation[2]);\n model.scale.set(scale[0], scale[1], scale[2]);\n model.visible = modelMap.get(id)?.visible ?? true;\n wrapper.add(model);\n modelMap.set(id, model);\n modelResolve(modelMap);\n },\n undefined,\n (error) => {\n console.error(`Error loading model ${id}:`, error);\n modelReject(error);\n }\n );\n });\n });\n\n map.addLayer({\n id: '3d-model-layer2',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => Promise.all(modelLoadPromises).then((res)=>{\n resolve(res);\n onModelsLoaded(true);\n }).catch(reject),\n render: () => {},\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function toggleModelVisibility(modelMap, modelId, isVisible) {\n const model = modelMap.get(modelId);\n if (!model) return;\n console.log('toggleModelVisibility_model', model);\n const isAnimating = {}; // Object to track animations\n model.traverse((child) => {\n if (child.isMesh) {\n const id = child.id; // Use unique child.id as the key\n child.material.transparent = true;\n if (!isAnimating[id]) {\n isAnimating[id] = true; // Set animation flag\n gsap.to(child.material, {\n opacity: isVisible ? 1 : 0,\n duration: 0.5, // Smooth fade animation\n ease: 'power2.inOut',\n onComplete: () => {\n isAnimating[id] = false; // Reset animation flag\n model.visible = isVisible;\n },\n });\n } else if (child.isMesh) {\n console.error(`GSAP Animation already running for child id ${id}!`);\n }\n }\n });\n if (isVisible) {\n model.visible = true;\n }\n}\n\nexport function bearingToRotation(bearing: number) {\n // Mapbox bearing is clockwise from north, Three.js rotation is counterclockwise from east\n const threeRotation = -((bearing - 90) * Math.PI / 180);\n return threeRotation;\n}\n\nexport function rotationToBearing(quaternion: Quaternion) {\n const euler = new Euler().setFromQuaternion(quaternion);\n // Convert from radians to degrees and adjust coordinate systems\n const bearing = (360 - (euler.y * 180 / Math.PI - 90)) % 360;\n return bearing;\n}\n\nexport function objectDirectionToBearing(object) {\n const forward = new Vector3();\n object.getWorldDirection(forward);\n\n // Project onto the map's X-Z plane (ignore Y)\n const bearing = Math.atan2(forward.x, forward.z) * (180 / Math.PI);\n \n return bearing;\n}"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["THREE","Euler","Vector3","constants","gsap","GLTFLoader","projectToWorld","coords","projected","MERCATOR_A","DEG2RAD","PROJECTION_WORLD_SIZE","Math","log","tan","PI","push","pixelsPerMeter","projectedUnitsPerMeter","result","latitude","abs","WORLD_SIZE","cos","EARTH_CIRCUMFERENCE","unprojectFromWorld","worldUnits","unprojected","x","atan","exp","y","height","z","toDecimal","n","d","Number","toFixed","addModelsToMap","wrapper","map","models","modelMap","onModelsLoaded","Promise","resolve","reject","modelLoadPromises","_ref","id","modelUrl","rotation","scale","instanced","modelResolve","modelReject","loader","load","gltf","_modelMap$get$visible","_modelMap$get","model","scene","traverse","child","Mesh","Array","isArray","material","forEach","mat","side","DoubleSide","needsUpdate","worldPosition","position","set","up","visible","get","add","undefined","error","console","concat","addLayer","type","renderingMode","onAdd","all","then","res","catch","render","toggleModelVisibility","modelId","isVisible","isAnimating","isMesh","transparent","to","opacity","duration","ease","onComplete","bearingToRotation","bearing","threeRotation","rotationToBearing","quaternion","euler","setFromQuaternion","objectDirectionToBearing","object","forward","getWorldDirection","atan2"],"sources":["../../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.ts"],"sourcesContent":["import * as THREE from 'three';\nimport {Quaternion, Euler, Vector3, InstancedMesh, Object3D} from 'three';\nimport constants from './constants';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\nimport { LngLatLike } from 'maplibre-gl';\nimport { Position } from 'geojson';\nimport gsap from 'gsap';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { AmbientLight, DirectionalLight } from 'three';\nimport CustomThreeJSWrapper from '../CustomThreeJsWrapper.js';\n\nexport function projectToWorld(coords: Position) {\n var projected = [\n -constants.MERCATOR_A *\n constants.DEG2RAD *\n coords[0] *\n constants.PROJECTION_WORLD_SIZE,\n -constants.MERCATOR_A *\n Math.log(Math.tan(Math.PI * 0.25 + 0.5 * constants.DEG2RAD * coords[1])) *\n constants.PROJECTION_WORLD_SIZE,\n ];\n\n if (!coords[2]) projected.push(0);\n else {\n var pixelsPerMeter = projectedUnitsPerMeter(coords[1]);\n projected.push(coords[2] * pixelsPerMeter);\n }\n\n var result = new Vector3(projected[0], projected[1], projected[2]);\n\n return result;\n}\n\nfunction projectedUnitsPerMeter(latitude: number) {\n return Math.abs(\n constants.WORLD_SIZE /\n Math.cos(constants.DEG2RAD * latitude) /\n constants.EARTH_CIRCUMFERENCE\n );\n}\n\nexport function unprojectFromWorld(worldUnits: Vector3) {\n var unprojected = [\n -worldUnits.x /\n (constants.MERCATOR_A *\n constants.DEG2RAD *\n constants.PROJECTION_WORLD_SIZE),\n (2 *\n (Math.atan(\n Math.exp(\n worldUnits.y /\n (constants.PROJECTION_WORLD_SIZE * -constants.MERCATOR_A)\n )\n ) -\n Math.PI / 4)) /\n constants.DEG2RAD,\n ];\n\n var pixelsPerMeter = projectedUnitsPerMeter(unprojected[1]);\n\n // z dimension\n var height = worldUnits.z || 0;\n unprojected.push(height / pixelsPerMeter);\n\n return unprojected as LngLatLike;\n}\n\nexport function toDecimal (n, d) {\n return Number(n.toFixed(d));\n}\n\n// RF: TO BE REMOVED. ModelLoader component can be used to load 3D models.\nexport function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {\n return new Promise((resolve, reject) => {\n try {\n const modelLoadPromises = models.map(({ id, modelUrl, coords, rotation, scale, instanced }) => {\n return new Promise((modelResolve, modelReject) => {\n const loader = new GLTFLoader();\n loader.load(\n modelUrl,\n (gltf) => {\n const model = gltf.scene;\n model.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n if (Array.isArray(child.material)) {\n child.material.forEach((mat) => {\n mat.side = THREE.DoubleSide;\n mat.needsUpdate = true;\n });\n } else {\n child.material.side = THREE.DoubleSide;\n child.material.needsUpdate = true;\n }\n }\n });\n \n const worldPosition = projectToWorld(coords);\n model.position.set(worldPosition.x, worldPosition.y, 0);\n model.up.set(0, 0, 1);\n model.rotation.set(rotation[0], rotation[1], rotation[2]);\n model.scale.set(scale[0], scale[1], scale[2]);\n model.visible = modelMap.get(id)?.visible ?? true;\n wrapper.add(model);\n modelMap.set(id, model);\n modelResolve(modelMap);\n },\n undefined,\n (error) => {\n console.error(`Error loading model ${id}:`, error);\n modelReject(error);\n }\n );\n });\n });\n\n map.addLayer({\n id: '3d-model-layer2',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => Promise.all(modelLoadPromises).then((res)=>{\n resolve(res);\n onModelsLoaded(true);\n }).catch(reject),\n render: () => {},\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function toggleModelVisibility(modelMap, modelId, isVisible) {\n const model = modelMap.get(modelId);\n if (!model) return;\n console.log('toggleModelVisibility_model', model);\n const isAnimating = {}; // Object to track animations\n model.traverse((child) => {\n if (child.isMesh) {\n const id = child.id; // Use unique child.id as the key\n child.material.transparent = true;\n if (!isAnimating[id]) {\n isAnimating[id] = true; // Set animation flag\n gsap.to(child.material, {\n opacity: isVisible ? 1 : 0,\n duration: 0.5, // Smooth fade animation\n ease: 'power2.inOut',\n onComplete: () => {\n isAnimating[id] = false; // Reset animation flag\n model.visible = isVisible;\n },\n });\n } else if (child.isMesh) {\n console.error(`GSAP Animation already running for child id ${id}!`);\n }\n }\n });\n if (isVisible) {\n model.visible = true;\n }\n}\n\nexport function bearingToRotation(bearing: number) {\n // Mapbox bearing is clockwise from north, Three.js rotation is counterclockwise from east\n const threeRotation = -((bearing - 90) * Math.PI / 180);\n return threeRotation;\n}\n\nexport function rotationToBearing(quaternion: Quaternion) {\n const euler = new Euler().setFromQuaternion(quaternion);\n // Convert from radians to degrees and adjust coordinate systems\n const bearing = (360 - (euler.y * 180 / Math.PI - 90)) % 360;\n return bearing;\n}\n\nexport function objectDirectionToBearing(object) {\n const forward = new Vector3();\n object.getWorldDirection(forward);\n\n // Project onto the map's X-Z plane (ignore Y)\n const bearing = Math.atan2(forward.x, forward.z) * (180 / Math.PI);\n \n return bearing;\n}"],"mappings":"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","ignoreList":[]}