@vuemap/vue-amap-extra
Version:
@vuemap/vue-amap扩展库,包含threejs相关图层
1 lines • 10.5 kB
Source Map (JSON)
{"version":3,"file":"CSS2DRenderer.mjs","sources":["../../../../packages/ThreeLayer/CSS2DRenderer.js"],"sourcesContent":["import { Matrix4, Object3D, Vector2, Vector3 } from 'three';\r\n\r\nclass CSS2DObject extends Object3D {\r\n constructor(element = document.createElement('div')) {\r\n super();\r\n\r\n this.isCSS2DObject = true;\r\n\r\n this.element = element;\r\n\r\n this.element.style.position = 'absolute';\r\n this.element.style.userSelect = 'none';\r\n\r\n this.element.setAttribute('draggable', false);\r\n\r\n this.center = new Vector2(0.5, 0.5); // ( 0, 0 ) is the lower left; ( 1, 1 ) is the top right\r\n\r\n this.addEventListener('removed', function () {\r\n this.traverse(function (object) {\r\n if (object.element instanceof Element && object.element.parentNode !== null) {\r\n object.element.parentNode.removeChild(object.element);\r\n }\r\n });\r\n });\r\n }\r\n\r\n copy(source, recursive) {\r\n super.copy(source, recursive);\r\n\r\n const self = this;\r\n\r\n self.element = source.element.cloneNode(true);\r\n\r\n self.center = source.center;\r\n\r\n return self;\r\n }\r\n}\r\n\r\n//\r\n\r\nconst _vector = new Vector3();\r\nconst _viewMatrix = new Matrix4();\r\nconst _viewProjectionMatrix = new Matrix4();\r\nconst _a = new Vector3();\r\nconst _b = new Vector3();\r\n\r\nclass CSS2DRenderer {\r\n constructor(parameters = {}) {\r\n const _this = this;\r\n\r\n let _width, _height;\r\n let _widthHalf, _heightHalf;\r\n\r\n const cache = {\r\n objects: new WeakMap(),\r\n };\r\n\r\n const domElement =\r\n parameters.element !== undefined ? parameters.element : document.createElement('div');\r\n\r\n domElement.style.overflow = 'hidden';\r\n\r\n this.domElement = domElement;\r\n\r\n this.getSize = function () {\r\n return {\r\n width: _width,\r\n height: _height,\r\n };\r\n };\r\n\r\n this.render = function (scene, camera) {\r\n if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld();\r\n if (camera.parent === null && camera.matrixWorldAutoUpdate === true)\r\n camera.updateMatrixWorld();\r\n\r\n _viewMatrix.copy(camera.matrixWorldInverse);\r\n _viewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, _viewMatrix);\r\n\r\n renderObject(scene, scene, camera);\r\n zOrder(scene);\r\n };\r\n\r\n this.setSize = function (width, height) {\r\n _width = width;\r\n _height = height;\r\n\r\n _widthHalf = _width / 2;\r\n _heightHalf = _height / 2;\r\n\r\n domElement.style.width = width + 'px';\r\n domElement.style.height = height + 'px';\r\n };\r\n\r\n function renderObject(object, scene, camera) {\r\n if (object.isCSS2DObject) {\r\n _vector.setFromMatrixPosition(object.matrixWorld);\r\n _vector.applyMatrix4(_viewProjectionMatrix);\r\n\r\n const visible =\r\n object.visible === true &&\r\n _vector.z >= -1 &&\r\n _vector.z <= 1 &&\r\n object.layers.test(camera.layers) === true;\r\n object.element.style.display = visible === true ? '' : 'none';\r\n\r\n if (visible === true) {\r\n object.onBeforeRender(_this, scene, camera);\r\n\r\n const element = object.element;\r\n\r\n element.style.transform =\r\n 'translate(' +\r\n -100 * object.center.x +\r\n '%,' +\r\n -100 * object.center.y +\r\n '%)' +\r\n 'translate(' +\r\n (_vector.x * _widthHalf + _widthHalf) +\r\n 'px,' +\r\n (-_vector.y * _heightHalf + _heightHalf) +\r\n 'px)';\r\n\r\n if (element.parentNode !== domElement) {\r\n domElement.appendChild(element);\r\n }\r\n\r\n object.onAfterRender(_this, scene, camera);\r\n }\r\n\r\n const objectData = {\r\n distanceToCameraSquared: getDistanceToSquared(camera, object),\r\n };\r\n\r\n cache.objects.set(object, objectData);\r\n }\r\n\r\n for (let i = 0, l = object.children.length; i < l; i++) {\r\n renderObject(object.children[i], scene, camera);\r\n }\r\n }\r\n\r\n function getDistanceToSquared(object1, object2) {\r\n _a.setFromMatrixPosition(object1.matrixWorld);\r\n _b.setFromMatrixPosition(object2.matrixWorld);\r\n\r\n return _a.distanceToSquared(_b);\r\n }\r\n\r\n function filterAndFlatten(scene) {\r\n const result = [];\r\n\r\n scene.traverse(function (object) {\r\n if (object.isCSS2DObject) result.push(object);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function zOrder(scene) {\r\n const sorted = filterAndFlatten(scene).sort(function (a, b) {\r\n if (a.renderOrder !== b.renderOrder) {\r\n return b.renderOrder - a.renderOrder;\r\n }\r\n\r\n const distanceA = cache.objects.get(a).distanceToCameraSquared;\r\n const distanceB = cache.objects.get(b).distanceToCameraSquared;\r\n\r\n return distanceA - distanceB;\r\n });\r\n\r\n const zMax = sorted.length;\r\n\r\n for (let i = 0, l = sorted.length; i < l; i++) {\r\n sorted[i].element.style.zIndex = zMax - i;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport { CSS2DObject, CSS2DRenderer };\r\n"],"names":[],"mappings":"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"}