{"code":"/**\r\n * Collection of ThreeJS related functions\r\n */\r\nimport TM from './ThreeMap';\r\nimport * as THREE from 'three';\r\nimport { getTilePosition, getTileScale } from \"./utils\";\r\n/**\r\n * Returns camera base plane position\r\n * @returns ThreeJS camera XZ (base plane) position\r\n */\r\nexport function getCameraPosition() {\r\n    return [TM.controls.target.x, -TM.controls.target.z];\r\n}\r\nexport function setFog() {\r\n    if (TM.three_map.parent.fog) {\r\n        TM.three_map.parent.fog.far = 1 / (getZoom() - 1) * 15000000;\r\n    }\r\n    else {\r\n        TM.three_map.parent.fog = new THREE.Fog(TM.three_map.parent.background || new THREE.Color(0xffffff), 0.0001, 1 / (getZoom() - 1) * 15000000);\r\n    }\r\n}\r\n/**\r\n * Used for getting zoom level (see Utils)\r\n * @returns Camera to controls' target distance\r\n */\r\nexport function getZoom() {\r\n    return TM.controls.target.distanceTo(TM.camera.position);\r\n}\r\n/**\r\n * Process data returned from worker\r\n * @param data Geometry & color buffers generated by worker\r\n */\r\nexport function buildFromWorkerData(data) {\r\n    let pos = getTilePosition(data.id);\r\n    let scale = getTileScale(data.id);\r\n    let geometry = new THREE.BufferGeometry();\r\n    let vecBuffer = new Float32Array(data.vecBuffer);\r\n    let colBuffer = new Float32Array(data.colBuffer);\r\n    geometry.addAttribute('position', new THREE.BufferAttribute(vecBuffer, 3));\r\n    geometry.addAttribute('color', new THREE.BufferAttribute(colBuffer, 3));\r\n    geometry.computeVertexNormals();\r\n    let tile = new THREE.Mesh(geometry, TM.material);\r\n    tile.name = data.id;\r\n    TM.three_map.add(tile);\r\n    tile.scale.set(scale[0], scale[1], scale[2]);\r\n    tile.position.set(pos[0], 0, -pos[1]);\r\n}\r\n/**\r\n * @param tile Tile to get bounds for\r\n * @returns Tile bounds in THREE.Box3 form\r\n */\r\nexport function tileBounds(tile) {\r\n    let pos = getTilePosition(tile);\r\n    let scale = getTileScale(tile)[0] * 2048 * Math.sqrt(2) / 1.5;\r\n    let vec1 = { x: pos[0] + scale, y: 0, z: -pos[1] + scale };\r\n    let vec2 = { x: pos[0] - scale, y: 0, z: -pos[1] - scale };\r\n    /*console.log(vec1, vec2, 'number 1');\r\n    let box = tileToBBOX(quadkeyToTile(tile));\r\n    let min = ll2merc([box[0], box[1]]);\r\n    let max = ll2merc([box[2], box[3]]);\r\n    let vec3 = {x: min[0], y:0, z: -min[1]};\r\n    let vec4 = {x:-max[0], y:0, z: max[1]};\r\n    console.log(vec3,vec4, 'number 2');*/\r\n    //@ts-ignore\r\n    return new THREE.Box3(vec1, vec2);\r\n}\r\nexport function intersects(bounds) {\r\n    return TM.frustum.intersectsBox(bounds);\r\n}\r\n/**\r\n * Remove tile from grid & dispose its geometry\r\n * @param id ID (QuadKey) of tile to remove\r\n */\r\nexport function removeTile(id) {\r\n    let toRemove = TM.three_map.getObjectByName(id);\r\n    if (toRemove) {\r\n        if (toRemove.geometry) {\r\n            toRemove.geometry.dispose();\r\n        }\r\n        TM.three_map.remove(toRemove);\r\n    }\r\n}\r\n//# sourceMappingURL=THREEBridge.js.map","map":"{\"version\":3,\"file\":\"THREEBridge.js\",\"sourceRoot\":\"\",\"sources\":[\"src/THREEBridge.ts\"],\"names\":[],\"mappings\":\"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\"}"}
