@anov/3d 0.0.73 → 0.0.74
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.
- package/dist/factory/unit/CameraPoi.d.ts +1 -0
- package/dist/factory/unit/CameraPoi.js +32 -15
- package/dist/factory/unit/CameraPoi.js.map +1 -1
- package/dist/factory/unit/cylinder.js +0 -21
- package/dist/factory/unit/cylinder.js.map +1 -1
- package/dist/factory/unit/index.d.ts +1 -1
- package/dist/factory/unit/index.js +6 -2
- package/dist/factory/unit/index.js.map +1 -1
- package/dist/factory/unit/poi.d.ts +2 -0
- package/dist/factory/unit/poi.js +39 -7
- package/dist/factory/unit/poi.js.map +1 -1
- package/package.json +3 -3
|
@@ -155,43 +155,56 @@ var CameraPoi = /*#__PURE__*/function () {
|
|
|
155
155
|
key: "cameraEvent",
|
|
156
156
|
value: function cameraEvent(sprite, region) {
|
|
157
157
|
var _this2 = this;
|
|
158
|
-
var _use$useScene = use.useScene(),
|
|
159
|
-
camera = _use$useScene.camera;
|
|
160
158
|
var fn = /*#__PURE__*/function () {
|
|
161
159
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
162
|
-
var
|
|
160
|
+
var isClose, _use$useScene, camera, position, targetPosition, camaraPosition;
|
|
163
161
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
164
162
|
while (1) switch (_context3.prev = _context3.next) {
|
|
165
163
|
case 0:
|
|
166
|
-
if (!
|
|
167
|
-
_context3.next =
|
|
164
|
+
if (!_this2.currentDialogMesh) {
|
|
165
|
+
_context3.next = 7;
|
|
168
166
|
break;
|
|
169
167
|
}
|
|
168
|
+
isClose = _this2.currentDialogMesh.name === region.camera.name;
|
|
170
169
|
_this2.dialogManage.close();
|
|
170
|
+
if (!isClose) {
|
|
171
|
+
_context3.next = 5;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
171
174
|
return _context3.abrupt("return");
|
|
172
|
-
case
|
|
175
|
+
case 5:
|
|
176
|
+
_context3.next = 8;
|
|
177
|
+
break;
|
|
178
|
+
case 7:
|
|
179
|
+
if (_this2.headMap && _this2.headMap.isShow) {
|
|
180
|
+
_this2.closeHotmap();
|
|
181
|
+
} else {
|
|
182
|
+
_use$useScene = use.useScene(), camera = _use$useScene.camera;
|
|
183
|
+
_this2.startPosition = camera.position.clone();
|
|
184
|
+
// 获取相机朝向
|
|
185
|
+
_this2.cameraLookAt = new Vector3(); // 创建一个向量来存储相机朝向
|
|
186
|
+
camera.getWorldDirection(_this2.cameraLookAt); // 获取相机朝向并存储在向量中
|
|
187
|
+
}
|
|
188
|
+
case 8:
|
|
173
189
|
sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, {
|
|
174
190
|
id: region.camera.id
|
|
175
191
|
});
|
|
176
192
|
position = new Vector3().fromArray(region.camera.position);
|
|
177
193
|
targetPosition = position.clone().toArray();
|
|
178
194
|
camaraPosition = position.clone().add(new Vector3(0, 40, 80)).toArray();
|
|
179
|
-
startPosition = camera.position.clone(); // 获取相机朝向
|
|
180
|
-
cameraLookAt = new Vector3(); // 创建一个向量来存储相机朝向
|
|
181
|
-
camera.getWorldDirection(cameraLookAt); // 获取相机朝向并存储在向量中
|
|
182
195
|
_this2.gobal.cameraUtil.set({
|
|
183
196
|
position: camaraPosition,
|
|
184
197
|
target: targetPosition
|
|
185
198
|
});
|
|
186
|
-
_context3.next =
|
|
199
|
+
_context3.next = 15;
|
|
187
200
|
return _this2.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -20, 5)));
|
|
188
|
-
case
|
|
201
|
+
case 15:
|
|
189
202
|
_this2.currentDialogMesh = _context3.sent;
|
|
190
203
|
_this2.dialogManage.addEventListener('close', function () {
|
|
191
204
|
// 初始相机到原始位置
|
|
192
205
|
_this2.gobal.cameraUtil.set({
|
|
193
|
-
position: startPosition.toArray(),
|
|
194
|
-
target: cameraLookAt.toArray()
|
|
206
|
+
position: _this2.startPosition.toArray(),
|
|
207
|
+
target: _this2.cameraLookAt.toArray()
|
|
195
208
|
});
|
|
196
209
|
_this2.currentDialogMesh = null;
|
|
197
210
|
sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, {
|
|
@@ -200,7 +213,7 @@ var CameraPoi = /*#__PURE__*/function () {
|
|
|
200
213
|
});
|
|
201
214
|
_this2.currentDialogMesh.name = region.camera.name;
|
|
202
215
|
_this2.gobal.scene.add(_this2.currentDialogMesh);
|
|
203
|
-
case
|
|
216
|
+
case 19:
|
|
204
217
|
case "end":
|
|
205
218
|
return _context3.stop();
|
|
206
219
|
}
|
|
@@ -221,6 +234,7 @@ var CameraPoi = /*#__PURE__*/function () {
|
|
|
221
234
|
var _this3 = this;
|
|
222
235
|
var _use$useScene2 = use.useScene(),
|
|
223
236
|
camera = _use$useScene2.camera;
|
|
237
|
+
this.headMap = new HeadMap();
|
|
224
238
|
var unClick = sprite.addEventListener('click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
225
239
|
var position, camaraPosition;
|
|
226
240
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
@@ -247,7 +261,6 @@ var CameraPoi = /*#__PURE__*/function () {
|
|
|
247
261
|
position: camaraPosition.toArray(),
|
|
248
262
|
target: position.clone().toArray()
|
|
249
263
|
}).then(function () {
|
|
250
|
-
_this3.headMap = new HeadMap();
|
|
251
264
|
var mesh = _this3.headMap.create(camaraPosition.distanceTo(position));
|
|
252
265
|
mesh.position.copy(sprite.position);
|
|
253
266
|
mesh.position.y = 0.5;
|
|
@@ -278,6 +291,7 @@ var CameraPoi = /*#__PURE__*/function () {
|
|
|
278
291
|
}, {
|
|
279
292
|
key: "closeHotmap",
|
|
280
293
|
value: function closeHotmap() {
|
|
294
|
+
if (!this.headMap) return;
|
|
281
295
|
this.headMap.remove();
|
|
282
296
|
this.togglePoi(true);
|
|
283
297
|
this.gobal.cameraUtil.set({
|
|
@@ -707,12 +721,14 @@ var HeadMap = /*#__PURE__*/function () {
|
|
|
707
721
|
_defineProperty(this, "backEle", void 0);
|
|
708
722
|
_defineProperty(this, "heatMapPlane", void 0);
|
|
709
723
|
_defineProperty(this, "canvasList", []);
|
|
724
|
+
_defineProperty(this, "isShow", false);
|
|
710
725
|
}
|
|
711
726
|
|
|
712
727
|
// 热力图
|
|
713
728
|
_createClass(HeadMap, [{
|
|
714
729
|
key: "create",
|
|
715
730
|
value: function create(distance) {
|
|
731
|
+
this.isShow = true;
|
|
716
732
|
var heatmap = heatMap.create({
|
|
717
733
|
container: this.createDom(),
|
|
718
734
|
gradient: this.TemperatureColorStops
|
|
@@ -837,6 +853,7 @@ var HeadMap = /*#__PURE__*/function () {
|
|
|
837
853
|
this.backEle && this.backEle.remove();
|
|
838
854
|
this.heatMapPlane.removeFromParent();
|
|
839
855
|
this.heatMapPlane.remove();
|
|
856
|
+
this.isShow = false;
|
|
840
857
|
}
|
|
841
858
|
}]);
|
|
842
859
|
return HeadMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","Clock","Color","DoubleSide","Group","MathUtils","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","PerspectiveCamera","PlaneGeometry","ShaderMaterial","Sprite","SpriteMaterial","Texture","TextureLoader","Vector3","gsap","use","Css2DPoi","SpritePoi","heatMap","MessageType","sendToMessage","EMessageStatus","loadingManager","usePath","regionMap","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","Object","keys","forEach","key","region","group","name","camera","id","sprite","scale","rotation","y","Math","PI","position","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","title","interactionManager","cameraEvent","point","MethanePoint","probePoint","item","mesh","warn","probeEvent","to","duration","ease","yoyo","repeat","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","useScene","fn","currentDialogMesh","close","Event","Success","undefined","targetPosition","toArray","camaraPosition","startPosition","cameraLookAt","getWorldDirection","cameraUtil","target","getMesh","addEventListener","removeEventListener","unClick","visible","togglePoi","then","headMap","HeadMap","distanceTo","orbitControls","enabled","closeHotmap","remove","removeFromParent","clear","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","cameraPosition","window","innerWidth","innerHeight","setCustomPerspective","cuteSprite","depthWrite","center","renderOrder","updateScale","Promise","reslove","setTimeout","borderMesh","getBorderMesh","cuteSprites","push","angleX","degToRad","angleY","angleZ","rotationMatrix","makeRotationX","multiply","makeRotationY","makeRotationZ","cameraDirection","targetDirection","applyMatrix4","devicePixelRatio","bbox","setFromObject","min","project","max","w","h","dom","document","querySelector","clientWidth","clientHeight","ratio","fov","width","height","scaleFactor","minDistance","maxDistance","objectPosition","distance","clampedDistance","eventName","eventList","has","getBoxSize","dialogDiv","createElement","assign","style","maskingDiv","className","appendChild","closeSpan","hLine","vLine","op","opList","btnSpan","handleClick","clock","longPress","time","getDelta","clearTimeout","sliderDiv","sliderBar","type","value","updateProjectionMatrix","css","styleElement","createTextNode","head","length","get","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","setData","data","greymap","heatMapMaterial","uniforms","greyMap","Zscale","u_color","u_opacity","_renderer","canvas","needsUpdate","greyTexture","tan","aspect","heatMapGeometry","heatMapPlane","backEle","innerHTML","body","zIndex","canvasList"],"sources":["../../../src/factory/unit/CameraPoi.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { AdditiveBlending, Box3, CircleGeometry, Clock, Color, DoubleSide, Euler, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, WebGLRenderTarget, gsap, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi } from '@anov/3d-ability'\nimport heatMap from 'anov-heat-map'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\nimport { loadingManager, usePath } from '../3d'\n\n// @ts-ignore\nimport type Factory3D from '../3d'\n\n// @ts-ignore\nimport { regionMap } from '../regionData'\n\nconst load = new ModelLoader()\nclass CameraPoi {\n gobal: Factory3D\n cameraMesh: Map<string, Group> = new Map()\n warnMesh: Map<string, SpritePoi> = new Map()\n headMap: HeadMap\n dialogManage: Dialog\n eventListener: Set<Function> = new Set()\n\n currentDialogMesh: Group\n startPosition: Vector3\n cameraLookAt: Vector3\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.dialogManage = new Dialog(this)\n this.dialogManage.addStyle()\n }\n\n async generateObject() {\n const model = await load.loadGLTF(`${usePath}shexiang.glb`, false, true, './draco/', (gltf) => {\n return gltf\n })\n\n Object.keys(regionMap).forEach(async (key: string) => {\n // 摄像机\n const region = regionMap[key]\n const group = new Group()\n group.name = region.camera.id\n const sprite = new SpritePoi(`${usePath}camera.png`, { scale: [14, 14, 1] })\n sprite.rotation.y = Math.PI\n const position = new Vector3().fromArray(region.camera.position)\n sprite.position.copy(position)\n group.add(sprite)\n\n const scan = model.scene.clone()\n scan.scale.addScalar(8)\n scan.rotation.x = (-Math.PI / 2) + 0.5\n scan.position.copy(position.clone().add(new Vector3(0, -2, 0)))\n group.add(scan)\n\n this.cameraMesh.set(region.title, group)\n this.gobal.interactionManager.add(group)\n this.cameraEvent(group, region)\n this.gobal.scene.add(group)\n\n // 甲烷检测点\n const point = new MethanePoint()\n region.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [16, 16, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, region)\n // 使用GSAP创建跳动动画\n gsap.to(mesh.position, {\n y: '+=3', // 上跳10个单位\n duration: 0.2, // 动画持续时间\n ease: 'power1.inOut', // 缓动函数\n yoyo: true, // 循环\n repeat: -1, // 无限重复\n })\n }\n else {\n mesh = point.create()\n }\n mesh.position.copy(new Vector3().fromArray(item.position))\n this.warnMesh.set(region.title, mesh)\n\n this.gobal.scene.add(mesh)\n })\n })\n // 设置左右旋转的标志位和旋转速度\n let rotatingRight = true // 是否正在向右转动\n\n const unFrame = use.useframe(() => {\n this.cameraMesh.forEach((group) => {\n const scan = group.children[1]\n // 更新相机的旋转角度\n if (rotatingRight) {\n // 向右旋转\n scan.rotation.z += 0.005\n }\n else {\n // 向左旋转\n scan.rotation.z -= 0.005\n }\n\n // 检查是否达到目标旋转角度\n if (Math.abs(scan.rotation.z) >= Math.abs(Math.PI / 4)) {\n // 到达目标角度,切换旋转方向并更新目标角度\n rotatingRight = !rotatingRight\n }\n })\n })\n this.eventListener.add(unFrame)\n }\n\n cameraEvent(sprite: Group, region: any) {\n const { camera } = use.useScene()\n const fn = async () => {\n if (this.currentDialogMesh && this.currentDialogMesh.name === region.camera.name) {\n this.dialogManage.close()\n return\n }\n\n sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n\n const position = new Vector3().fromArray(region.camera.position)\n const targetPosition: [number, number, number] = position.clone().toArray()\n const camaraPosition: [number, number, number] = position.clone().add(new Vector3(0, 40, 80)).toArray()\n\n const startPosition = camera.position.clone()\n // 获取相机朝向\n const cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n\n this.currentDialogMesh = await this.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -20, 5))) as Group\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: startPosition.toArray(),\n target: cameraLookAt.toArray(),\n })\n this.currentDialogMesh = null\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n })\n this.currentDialogMesh.name = region.camera.name\n this.gobal.scene.add(this.currentDialogMesh)\n }\n\n sprite.addEventListener('click', fn)\n this.eventListener.add(() => sprite.removeEventListener('click', fn))\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n const unClick = sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, { id: region.probePoint[0].id })\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.probePoint[0].position)\n const camaraPosition = position.clone().add(new Vector3(0, 30, 0))\n\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition.toArray(),\n target: position.clone().toArray(),\n }).then(() => {\n this.headMap = new HeadMap()\n const mesh = this.headMap.create(camaraPosition.distanceTo(position))\n mesh.position.copy(sprite.position)\n mesh.position.y = 0.5\n this.gobal.scene.add(mesh)\n\n const { orbitControls } = use.useScene()\n orbitControls.enabled = false\n\n // this.headMap.addBack()\n this.headMap.addEventListener('close', () => {\n this.closeHotmap()\n // this.togglePoi(true)\n\n // this.gobal.cameraUtil.set({\n // position: this.startPosition.toArray(),\n // target: this.cameraLookAt.toArray(),\n // })\n })\n })\n })\n this.eventListener.add(unClick)\n }\n\n closeHotmap() {\n this.headMap.remove()\n this.togglePoi(true)\n\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n const { orbitControls } = use.useScene()\n orbitControls.enabled = true\n }\n\n togglePoi(visible = true) {\n this.warnMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n this.cameraMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n }\n\n remove() {\n // 删除摄像机POI点\n this.cameraMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.cameraMesh.clear()\n this.warnMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.warnMesh.clear()\n this.eventListener.forEach((fn) => {\n fn()\n })\n // 热力图\n if (this.headMap) {\n this.headMap.remove()\n const { orbitControls } = use.useScene()\n orbitControls.enabled = true\n }\n this.eventListener.clear()\n\n this.dialogManage.close()\n }\n}\n\nexport default CameraPoi\n\nclass MethanePoint {\n constructor() {\n\n }\n\n create() {\n // 定义Shader的uniform变量\n\n const geometry = new PlaneGeometry(10, 10)\n const texture = new TextureLoader(loadingManager).load(`${usePath}p4/monitor.png`)\n const circle = new Mesh(geometry, new MeshBasicMaterial({\n map: texture,\n side: DoubleSide,\n transparent: true,\n }))\n circle.rotateX(-Math.PI / 3)\n return circle\n }\n\n // 随机多点的方案\n createBack() {\n // 定义Shader的uniform变量\n\n const group = new Group()\n const geometry = new CircleGeometry(2, 32)\n // 创建自定义着色器材质\n const material = new ShaderMaterial({\n vertexShader: `\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_PointSize = 20.0; // 设置点的大小\n }\n `,\n fragmentShader: `\n void main() {\n vec2 center = vec2(0.5, 0.5); // 圆心坐标\n vec2 toCenter = gl_PointCoord - center; // 计算点到圆心的向量\n float distance = length(toCenter); // 计算点到圆心的距离\n if (distance > 0.5) discard; // 超出半径范围的点直接丢弃\n vec3 innerColor = vec3(1.0, .8, 0.0); // 内圈颜色为黄色\n vec3 outerColor = vec3(0.8, 0.4, 0.0); // 外圈颜色为深橘色\n \n vec3 finalColor = mix(innerColor, outerColor, smoothstep(0.1, 0.23, distance)); // 根据距离混合颜色\n if(distance>0.3) finalColor = mix(finalColor, vec3(0.75, 0.4, 0.0), smoothstep(0.25, 0.3, distance)); // 根据距离混合颜色\n gl_FragColor = vec4(finalColor, 1.0); // 设置片段颜色\n }\n `,\n blending: AdditiveBlending,\n depthTest: false,\n transparent: true,\n side: DoubleSide,\n })\n const circle = new Mesh(geometry, new MeshBasicMaterial({ color: '#f7a157' }))\n const numPoints = 100 // 点的数量\n\n for (let i = 0; i < numPoints; i++) {\n const x = Math.random() * 700 - 322 // 随机生成 x 坐标\n const z = Math.random() * 340 - 144 // 随机生成 z 坐标\n const point = circle.clone()\n point.position.copy(new Vector3(x, 20.55, z))\n point.rotateX(-Math.PI / 2)\n group.add(point)\n }\n\n return group\n }\n}\n\nclass Dialog {\n manage: CameraPoi\n\n camera: PerspectiveCamera\n cameraPosition: Vector3\n cameraTargetPosition: Vector3\n\n cuteSprites: Array<Object3D> = []\n eventListener: Set<Function> = new Set()\n eventList: Map<string, Function> = new Map()\n\n constructor(cameraManage) {\n this.manage = cameraManage\n }\n\n async getMesh(position, cameraPosition) {\n this.close()\n this.camera = new PerspectiveCamera(\n 90, window.innerWidth / window.innerHeight, 0.1, 10000,\n )\n this.camera.position.copy(cameraPosition)\n this.camera.rotation.set(-Math.PI / 6, Math.PI, 0)\n\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(this.camera)\n\n const cuteSprite = new Sprite(new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false }))\n cuteSprite.center.set(0.5, 0.5)\n cuteSprite.renderOrder = 5\n cuteSprite.position.copy(position)\n\n const unFrame = use.useframe(() => {\n this.updateScale(cuteSprite)\n })\n this.eventListener.add(unFrame)\n\n return new Promise((reslove) => {\n setTimeout(() => {\n const borderMesh = this.getBorderMesh(this.camera, cuteSprite)\n const group = new Group()\n group.add(borderMesh)\n group.add(cuteSprite)\n this.cuteSprites.push(borderMesh)\n this.cuteSprites.push(cuteSprite)\n close()\n reslove(group)\n }, 1000)\n })\n }\n\n getTarget(cameraPosition, rotation = [0, 30, 0]) {\n // 将旋转角度转换为弧度\n const angleX = MathUtils.degToRad(rotation[0])\n const angleY = MathUtils.degToRad(rotation[1])\n const angleZ = MathUtils.degToRad(rotation[2])\n\n // 创建旋转矩阵\n const rotationMatrix = new Matrix4()\n rotationMatrix.makeRotationX(angleX)\n rotationMatrix.multiply(new Matrix4().makeRotationY(angleY))\n rotationMatrix.multiply(new Matrix4().makeRotationZ(angleZ))\n\n // 定义相机的方向向量(例如,相机的方向默认为(0, 0, -1))\n const cameraDirection = new Vector3(0, 0, 1)\n\n // 将相机的方向向量乘以旋转矩阵,得到相机目标位置的向量\n const targetDirection = cameraDirection.clone().applyMatrix4(rotationMatrix)\n\n // 计算相机的目标位置\n return cameraPosition.clone().add(targetDirection)\n }\n\n getBoxSize(sprite: Sprite) {\n const { camera } = use.useScene()\n\n // 获取设备像素比\n const devicePixelRatio = window.devicePixelRatio || 1\n // 获取精灵对象的边界框\n const bbox = new Box3().setFromObject(sprite)\n // 将边界框的最小和最大顶点转换为屏幕坐标\n const min = bbox.min.project(camera)\n const max = bbox.max.project(camera)\n\n let [w, h] = [window.innerWidth, window.innerHeight]\n const dom = document.querySelector('#app')\n if (dom) {\n w = dom.clientWidth\n h = dom.clientHeight\n }\n let ratio = 0\n if (camera.fov >= 60)\n ratio = -0.05 * (camera.fov - 60) / 30\n else\n ratio = 0.02 * (60 - camera.fov) / 30\n\n // 计算精灵在屏幕中的宽度和高度像素值\n let width = (max.x - min.x) * w / devicePixelRatio * (0.97 + ratio)\n let height = (max.y - min.y) * h / devicePixelRatio * (1.089 + ratio)\n\n const scaleFactor = devicePixelRatio * 0.5\n // 应用缩放系数\n width *= scaleFactor\n height *= scaleFactor\n\n return { width, height }\n }\n\n updateScale(sprite: Sprite) {\n const { camera } = use.useScene()\n const ratio = 60 / camera.fov\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n // 获取相机和物体的世界坐标位置\n const cameraPosition = camera?.position\n const objectPosition = sprite.position\n\n // 计算相机和物体之间的距离\n const distance = cameraPosition?.distanceTo(objectPosition) || 0.1\n\n // 使用 Math.min() 和 Math.max() 方法限制 resultDistance 的范围\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n // console.log('clampedDistance:',clampedDistance)\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n sprite.scale.copy(new Vector3(clampedDistance * (1.3281 / ratio), (0.8316 / ratio) * clampedDistance, 1))\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n getBorderMesh(camera, sprite: Sprite) {\n let { width, height } = this.getBoxSize(sprite)\n\n // 弹窗容器\n const dialogDiv = document.createElement('div')\n width += 10\n height += 10\n Object.assign(dialogDiv.style, {\n 'width': `${width}px`,\n 'height': `${height}px`,\n 'z-index': '3 !important',\n 'backgroundImage': `url(${usePath}p4/border.png)`,\n 'backgroundSize': '100% 100%',\n 'backgroundRepeat': 'no-repeat',\n 'position': 'relative',\n\n // left: `${(window.innerWidth - width) / 2}px`,\n // top: `${(window.innerHeight - height) / 2}px`,\n })\n\n const maskingDiv = document.createElement('div')\n maskingDiv.className = 'dialog-mask'\n dialogDiv.appendChild(maskingDiv)\n\n // 关闭按钮\n const closeSpan = document.createElement('span')\n closeSpan.className = 'dialog-close'\n closeSpan.addEventListener('click', () => {\n this.close()\n })\n const hLine = document.createElement('span')\n hLine.className = 'dialog-close-line dialog-close-h-line'\n closeSpan.appendChild(hLine)\n const vLine = document.createElement('span')\n vLine.className = 'dialog-close-line dialog-close-v-line'\n closeSpan.appendChild(vLine)\n dialogDiv.appendChild(closeSpan)\n\n // 操作按钮\n const op = document.createElement('div')\n op.className = 'dialog-operate'\n dialogDiv.appendChild(op)\n const opList = ['left', 'right', 'top', 'bottom']\n opList.forEach((key) => {\n const btnSpan = document.createElement('span')\n btnSpan.className = `dialog-operate-btn dialog-operate-${key}`\n\n const handleClick = () => {\n switch (key) {\n case 'top':\n camera.rotation.x -= 0.01\n break\n case 'bottom':\n camera.rotation.x += 0.01\n break\n case 'left':\n camera.rotation.y -= 0.01\n break\n case 'right':\n camera.rotation.y += 0.01\n break\n }\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n }\n\n let clock\n let longPress\n let time\n\n btnSpan.addEventListener('mousedown', () => {\n clock = new Clock()\n clock.getDelta()\n\n time = setTimeout(() => {\n longPress = use.useframe(handleClick)\n }, 500)\n })\n\n btnSpan.addEventListener('mouseup', () => {\n if (clock.getDelta() < 0.5)\n handleClick()\n\n clearTimeout(time)\n longPress && longPress()\n })\n\n // btnSpan.addEventListener('click', handleClick)\n op.appendChild(btnSpan)\n })\n\n // 滑动条\n const sliderDiv = document.createElement('div')\n sliderDiv.className = 'dialog-slider-container'\n const sliderBar = document.createElement('input')\n sliderBar.type = 'range'\n sliderBar.min = '30'\n sliderBar.max = '120'\n sliderBar.value = '90'\n sliderBar.className = 'dialog-slider'\n sliderBar.addEventListener('input', () => {\n camera.fov = sliderBar.value\n camera.updateProjectionMatrix()\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n sliderDiv.appendChild(sliderBar)\n dialogDiv.appendChild(sliderDiv)\n\n const borderMesh = new Css2DPoi(dialogDiv)\n borderMesh.position.copy(sprite.position)\n return borderMesh\n }\n\n addStyle() {\n // 设置 CSS 规则\n const css = `\n .page-mask{\n position: fixed;\n top: 0;\n left: 0;\n bottom:0;\n right:0;\n //width: 100%;\n //height: 100%;\n background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */\n //filter: blur(10px); /* 模糊效果 */\n z-index: 1 !important; /* 确保蒙版位于其他元素之上 */\n }\n .dialog-mask{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 36px;\n height: 36px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 28px;\n top: 28px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 20px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 17px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 152px;\n height: 152px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 20px;\n bottom: 20px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-bottom: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n top: 25px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-top: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n bottom: 25px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-right: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n left: 25px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-left: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n right: 25px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 17px;\n height: 420px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:36px;\n top:120px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 420px;\n height: 17px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -202px;\n margin-top: 200px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 9px;\n height: 36px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 9px;\n height: 36px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n`\n // 创建一个 <style> 元素\n const styleElement = document.createElement('style')\n styleElement.appendChild(document.createTextNode(css))\n // 将 <style> 元素添加到 <head> 中\n document.head.appendChild(styleElement)\n }\n\n close() {\n if (this.cuteSprites) {\n this.cuteSprites.forEach((mesh) => {\n mesh.remove()\n mesh.removeFromParent()\n })\n this.cuteSprites.length = 0\n }\n this.eventList.has('close') && this.eventList.get('close')()\n // 移除事件监听\n this.eventListener.forEach((fn) => {\n fn()\n })\n this.eventListener.clear()\n this.eventList.clear()\n }\n}\n\nclass HeadMap {\n TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n }\n\n eventList: Map<string, Function> = new Map()\n backEle: HTMLElement\n heatMapPlane: Mesh\n canvasList = []\n\n constructor() {\n\n }\n\n // 热力图\n create(distance) {\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: this.TemperatureColorStops,\n })\n let len = 1200\n const width = window.innerWidth\n const height = window.innerHeight\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 10)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n side: DoubleSide,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 0 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 0.8,\n },\n },\n })\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const { camera } = use.useScene()\n // 计算平面的尺寸\n const h = 2 * Math.tan(camera.fov * Math.PI / 360) * distance * 2 * 0.85\n const w = h * camera.aspect\n\n const heatMapGeometry = new PlaneGeometry(w, h, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n\n this.heatMapPlane = heatMapPlane\n return heatMapPlane\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n addBack() {\n this.backEle = document.createElement('div')\n this.backEle.className = 'hot-back'\n this.backEle.innerHTML = '返回'\n document.body.appendChild(this.backEle)\n this.backEle.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n // this.remove()\n })\n }\n\n createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n canvas.style.zIndex = '-1'\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n this.canvasList.push(canvas)\n return canvas\n }\n\n remove() {\n this.canvasList.forEach((canvas) => {\n canvas.remove()\n })\n // this.eventList.has('close') && this.eventList.get('close')()\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","Clock","Color","DoubleSide","Group","MathUtils","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","PerspectiveCamera","PlaneGeometry","ShaderMaterial","Sprite","SpriteMaterial","Texture","TextureLoader","Vector3","gsap","use","Css2DPoi","SpritePoi","heatMap","MessageType","sendToMessage","EMessageStatus","loadingManager","usePath","regionMap","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","Object","keys","forEach","key","region","group","name","camera","id","sprite","scale","rotation","y","Math","PI","position","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","title","interactionManager","cameraEvent","point","MethanePoint","probePoint","item","mesh","warn","probeEvent","to","duration","ease","yoyo","repeat","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","fn","currentDialogMesh","isClose","close","headMap","isShow","closeHotmap","useScene","startPosition","cameraLookAt","getWorldDirection","Event","Success","undefined","targetPosition","toArray","camaraPosition","cameraUtil","target","getMesh","addEventListener","removeEventListener","HeadMap","unClick","visible","togglePoi","then","distanceTo","orbitControls","enabled","remove","removeFromParent","clear","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","cameraPosition","window","innerWidth","innerHeight","setCustomPerspective","cuteSprite","depthWrite","center","renderOrder","updateScale","Promise","reslove","setTimeout","borderMesh","getBorderMesh","cuteSprites","push","angleX","degToRad","angleY","angleZ","rotationMatrix","makeRotationX","multiply","makeRotationY","makeRotationZ","cameraDirection","targetDirection","applyMatrix4","devicePixelRatio","bbox","setFromObject","min","project","max","w","h","dom","document","querySelector","clientWidth","clientHeight","ratio","fov","width","height","scaleFactor","minDistance","maxDistance","objectPosition","distance","clampedDistance","eventName","eventList","has","getBoxSize","dialogDiv","createElement","assign","style","maskingDiv","className","appendChild","closeSpan","hLine","vLine","op","opList","btnSpan","handleClick","clock","longPress","time","getDelta","clearTimeout","sliderDiv","sliderBar","type","value","updateProjectionMatrix","css","styleElement","createTextNode","head","length","get","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","setData","data","greymap","heatMapMaterial","uniforms","greyMap","Zscale","u_color","u_opacity","_renderer","canvas","needsUpdate","greyTexture","tan","aspect","heatMapGeometry","heatMapPlane","backEle","innerHTML","body","zIndex","canvasList"],"sources":["../../../src/factory/unit/CameraPoi.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { AdditiveBlending, Box3, CircleGeometry, Clock, Color, DoubleSide, Euler, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, WebGLRenderTarget, gsap, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi } from '@anov/3d-ability'\nimport heatMap from 'anov-heat-map'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\nimport { loadingManager, usePath } from '../3d'\n\n// @ts-ignore\nimport type Factory3D from '../3d'\n\n// @ts-ignore\nimport { regionMap } from '../regionData'\n\nconst load = new ModelLoader()\nclass CameraPoi {\n gobal: Factory3D\n cameraMesh: Map<string, Group> = new Map()\n warnMesh: Map<string, SpritePoi> = new Map()\n headMap: HeadMap\n dialogManage: Dialog\n eventListener: Set<Function> = new Set()\n\n currentDialogMesh: Group\n startPosition: Vector3\n cameraLookAt: Vector3\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.dialogManage = new Dialog(this)\n this.dialogManage.addStyle()\n }\n\n async generateObject() {\n const model = await load.loadGLTF(`${usePath}shexiang.glb`, false, true, './draco/', (gltf) => {\n return gltf\n })\n\n Object.keys(regionMap).forEach(async (key: string) => {\n // 摄像机\n const region = regionMap[key]\n const group = new Group()\n group.name = region.camera.id\n const sprite = new SpritePoi(`${usePath}camera.png`, { scale: [14, 14, 1] })\n sprite.rotation.y = Math.PI\n const position = new Vector3().fromArray(region.camera.position)\n sprite.position.copy(position)\n group.add(sprite)\n\n const scan = model.scene.clone()\n scan.scale.addScalar(8)\n scan.rotation.x = (-Math.PI / 2) + 0.5\n scan.position.copy(position.clone().add(new Vector3(0, -2, 0)))\n group.add(scan)\n\n this.cameraMesh.set(region.title, group)\n this.gobal.interactionManager.add(group)\n this.cameraEvent(group, region)\n this.gobal.scene.add(group)\n\n // 甲烷检测点\n const point = new MethanePoint()\n region.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [16, 16, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, region)\n // 使用GSAP创建跳动动画\n gsap.to(mesh.position, {\n y: '+=3', // 上跳10个单位\n duration: 0.2, // 动画持续时间\n ease: 'power1.inOut', // 缓动函数\n yoyo: true, // 循环\n repeat: -1, // 无限重复\n })\n }\n else {\n mesh = point.create()\n }\n mesh.position.copy(new Vector3().fromArray(item.position))\n this.warnMesh.set(region.title, mesh)\n\n this.gobal.scene.add(mesh)\n })\n })\n // 设置左右旋转的标志位和旋转速度\n let rotatingRight = true // 是否正在向右转动\n\n const unFrame = use.useframe(() => {\n this.cameraMesh.forEach((group) => {\n const scan = group.children[1]\n // 更新相机的旋转角度\n if (rotatingRight) {\n // 向右旋转\n scan.rotation.z += 0.005\n }\n else {\n // 向左旋转\n scan.rotation.z -= 0.005\n }\n\n // 检查是否达到目标旋转角度\n if (Math.abs(scan.rotation.z) >= Math.abs(Math.PI / 4)) {\n // 到达目标角度,切换旋转方向并更新目标角度\n rotatingRight = !rotatingRight\n }\n })\n })\n this.eventListener.add(unFrame)\n }\n\n cameraEvent(sprite: Group, region: any) {\n const fn = async () => {\n if (this.currentDialogMesh) {\n const isClose = this.currentDialogMesh.name === region.camera.name\n this.dialogManage.close()\n if (isClose)\n return\n }\n else {\n if (this.headMap && this.headMap.isShow) {\n this.closeHotmap()\n }\n else {\n const { camera } = use.useScene()\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n }\n }\n\n sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n\n const position = new Vector3().fromArray(region.camera.position)\n const targetPosition: [number, number, number] = position.clone().toArray()\n const camaraPosition: [number, number, number] = position.clone().add(new Vector3(0, 40, 80)).toArray()\n\n this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n\n this.currentDialogMesh = await this.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -20, 5))) as Group\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n this.currentDialogMesh = null\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n })\n this.currentDialogMesh.name = region.camera.name\n this.gobal.scene.add(this.currentDialogMesh)\n }\n\n sprite.addEventListener('click', fn)\n this.eventListener.add(() => sprite.removeEventListener('click', fn))\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n this.headMap = new HeadMap()\n const unClick = sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, { id: region.probePoint[0].id })\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.probePoint[0].position)\n const camaraPosition = position.clone().add(new Vector3(0, 30, 0))\n\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition.toArray(),\n target: position.clone().toArray(),\n }).then(() => {\n const mesh = this.headMap.create(camaraPosition.distanceTo(position))\n mesh.position.copy(sprite.position)\n mesh.position.y = 0.5\n this.gobal.scene.add(mesh)\n\n const { orbitControls } = use.useScene()\n orbitControls.enabled = false\n\n // this.headMap.addBack()\n this.headMap.addEventListener('close', () => {\n this.closeHotmap()\n // this.togglePoi(true)\n\n // this.gobal.cameraUtil.set({\n // position: this.startPosition.toArray(),\n // target: this.cameraLookAt.toArray(),\n // })\n })\n })\n })\n this.eventListener.add(unClick)\n }\n\n closeHotmap() {\n if (!this.headMap)\n return\n this.headMap.remove()\n this.togglePoi(true)\n\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n const { orbitControls } = use.useScene()\n orbitControls.enabled = true\n }\n\n togglePoi(visible = true) {\n this.warnMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n this.cameraMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n }\n\n remove() {\n // 删除摄像机POI点\n this.cameraMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.cameraMesh.clear()\n this.warnMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.warnMesh.clear()\n this.eventListener.forEach((fn) => {\n fn()\n })\n // 热力图\n if (this.headMap) {\n this.headMap.remove()\n const { orbitControls } = use.useScene()\n orbitControls.enabled = true\n }\n this.eventListener.clear()\n\n this.dialogManage.close()\n }\n}\n\nexport default CameraPoi\n\nclass MethanePoint {\n constructor() {\n\n }\n\n create() {\n // 定义Shader的uniform变量\n\n const geometry = new PlaneGeometry(10, 10)\n const texture = new TextureLoader(loadingManager).load(`${usePath}p4/monitor.png`)\n const circle = new Mesh(geometry, new MeshBasicMaterial({\n map: texture,\n side: DoubleSide,\n transparent: true,\n }))\n circle.rotateX(-Math.PI / 3)\n return circle\n }\n\n // 随机多点的方案\n createBack() {\n // 定义Shader的uniform变量\n\n const group = new Group()\n const geometry = new CircleGeometry(2, 32)\n // 创建自定义着色器材质\n const material = new ShaderMaterial({\n vertexShader: `\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_PointSize = 20.0; // 设置点的大小\n }\n `,\n fragmentShader: `\n void main() {\n vec2 center = vec2(0.5, 0.5); // 圆心坐标\n vec2 toCenter = gl_PointCoord - center; // 计算点到圆心的向量\n float distance = length(toCenter); // 计算点到圆心的距离\n if (distance > 0.5) discard; // 超出半径范围的点直接丢弃\n vec3 innerColor = vec3(1.0, .8, 0.0); // 内圈颜色为黄色\n vec3 outerColor = vec3(0.8, 0.4, 0.0); // 外圈颜色为深橘色\n \n vec3 finalColor = mix(innerColor, outerColor, smoothstep(0.1, 0.23, distance)); // 根据距离混合颜色\n if(distance>0.3) finalColor = mix(finalColor, vec3(0.75, 0.4, 0.0), smoothstep(0.25, 0.3, distance)); // 根据距离混合颜色\n gl_FragColor = vec4(finalColor, 1.0); // 设置片段颜色\n }\n `,\n blending: AdditiveBlending,\n depthTest: false,\n transparent: true,\n side: DoubleSide,\n })\n const circle = new Mesh(geometry, new MeshBasicMaterial({ color: '#f7a157' }))\n const numPoints = 100 // 点的数量\n\n for (let i = 0; i < numPoints; i++) {\n const x = Math.random() * 700 - 322 // 随机生成 x 坐标\n const z = Math.random() * 340 - 144 // 随机生成 z 坐标\n const point = circle.clone()\n point.position.copy(new Vector3(x, 20.55, z))\n point.rotateX(-Math.PI / 2)\n group.add(point)\n }\n\n return group\n }\n}\n\nclass Dialog {\n manage: CameraPoi\n\n camera: PerspectiveCamera\n cameraPosition: Vector3\n cameraTargetPosition: Vector3\n\n cuteSprites: Array<Object3D> = []\n eventListener: Set<Function> = new Set()\n eventList: Map<string, Function> = new Map()\n\n constructor(cameraManage) {\n this.manage = cameraManage\n }\n\n async getMesh(position, cameraPosition) {\n this.close()\n this.camera = new PerspectiveCamera(\n 90, window.innerWidth / window.innerHeight, 0.1, 10000,\n )\n this.camera.position.copy(cameraPosition)\n this.camera.rotation.set(-Math.PI / 6, Math.PI, 0)\n\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(this.camera)\n\n const cuteSprite = new Sprite(new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false }))\n cuteSprite.center.set(0.5, 0.5)\n cuteSprite.renderOrder = 5\n cuteSprite.position.copy(position)\n\n const unFrame = use.useframe(() => {\n this.updateScale(cuteSprite)\n })\n this.eventListener.add(unFrame)\n\n return new Promise((reslove) => {\n setTimeout(() => {\n const borderMesh = this.getBorderMesh(this.camera, cuteSprite)\n const group = new Group()\n group.add(borderMesh)\n group.add(cuteSprite)\n this.cuteSprites.push(borderMesh)\n this.cuteSprites.push(cuteSprite)\n close()\n reslove(group)\n }, 1000)\n })\n }\n\n getTarget(cameraPosition, rotation = [0, 30, 0]) {\n // 将旋转角度转换为弧度\n const angleX = MathUtils.degToRad(rotation[0])\n const angleY = MathUtils.degToRad(rotation[1])\n const angleZ = MathUtils.degToRad(rotation[2])\n\n // 创建旋转矩阵\n const rotationMatrix = new Matrix4()\n rotationMatrix.makeRotationX(angleX)\n rotationMatrix.multiply(new Matrix4().makeRotationY(angleY))\n rotationMatrix.multiply(new Matrix4().makeRotationZ(angleZ))\n\n // 定义相机的方向向量(例如,相机的方向默认为(0, 0, -1))\n const cameraDirection = new Vector3(0, 0, 1)\n\n // 将相机的方向向量乘以旋转矩阵,得到相机目标位置的向量\n const targetDirection = cameraDirection.clone().applyMatrix4(rotationMatrix)\n\n // 计算相机的目标位置\n return cameraPosition.clone().add(targetDirection)\n }\n\n getBoxSize(sprite: Sprite) {\n const { camera } = use.useScene()\n\n // 获取设备像素比\n const devicePixelRatio = window.devicePixelRatio || 1\n // 获取精灵对象的边界框\n const bbox = new Box3().setFromObject(sprite)\n // 将边界框的最小和最大顶点转换为屏幕坐标\n const min = bbox.min.project(camera)\n const max = bbox.max.project(camera)\n\n let [w, h] = [window.innerWidth, window.innerHeight]\n const dom = document.querySelector('#app')\n if (dom) {\n w = dom.clientWidth\n h = dom.clientHeight\n }\n let ratio = 0\n if (camera.fov >= 60)\n ratio = -0.05 * (camera.fov - 60) / 30\n else\n ratio = 0.02 * (60 - camera.fov) / 30\n\n // 计算精灵在屏幕中的宽度和高度像素值\n let width = (max.x - min.x) * w / devicePixelRatio * (0.97 + ratio)\n let height = (max.y - min.y) * h / devicePixelRatio * (1.089 + ratio)\n\n const scaleFactor = devicePixelRatio * 0.5\n // 应用缩放系数\n width *= scaleFactor\n height *= scaleFactor\n\n return { width, height }\n }\n\n updateScale(sprite: Sprite) {\n const { camera } = use.useScene()\n const ratio = 60 / camera.fov\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n // 获取相机和物体的世界坐标位置\n const cameraPosition = camera?.position\n const objectPosition = sprite.position\n\n // 计算相机和物体之间的距离\n const distance = cameraPosition?.distanceTo(objectPosition) || 0.1\n\n // 使用 Math.min() 和 Math.max() 方法限制 resultDistance 的范围\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n // console.log('clampedDistance:',clampedDistance)\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n sprite.scale.copy(new Vector3(clampedDistance * (1.3281 / ratio), (0.8316 / ratio) * clampedDistance, 1))\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n getBorderMesh(camera, sprite: Sprite) {\n let { width, height } = this.getBoxSize(sprite)\n\n // 弹窗容器\n const dialogDiv = document.createElement('div')\n width += 10\n height += 10\n Object.assign(dialogDiv.style, {\n 'width': `${width}px`,\n 'height': `${height}px`,\n 'z-index': '3 !important',\n 'backgroundImage': `url(${usePath}p4/border.png)`,\n 'backgroundSize': '100% 100%',\n 'backgroundRepeat': 'no-repeat',\n 'position': 'relative',\n\n // left: `${(window.innerWidth - width) / 2}px`,\n // top: `${(window.innerHeight - height) / 2}px`,\n })\n\n const maskingDiv = document.createElement('div')\n maskingDiv.className = 'dialog-mask'\n dialogDiv.appendChild(maskingDiv)\n\n // 关闭按钮\n const closeSpan = document.createElement('span')\n closeSpan.className = 'dialog-close'\n closeSpan.addEventListener('click', () => {\n this.close()\n })\n const hLine = document.createElement('span')\n hLine.className = 'dialog-close-line dialog-close-h-line'\n closeSpan.appendChild(hLine)\n const vLine = document.createElement('span')\n vLine.className = 'dialog-close-line dialog-close-v-line'\n closeSpan.appendChild(vLine)\n dialogDiv.appendChild(closeSpan)\n\n // 操作按钮\n const op = document.createElement('div')\n op.className = 'dialog-operate'\n dialogDiv.appendChild(op)\n const opList = ['left', 'right', 'top', 'bottom']\n opList.forEach((key) => {\n const btnSpan = document.createElement('span')\n btnSpan.className = `dialog-operate-btn dialog-operate-${key}`\n\n const handleClick = () => {\n switch (key) {\n case 'top':\n camera.rotation.x -= 0.01\n break\n case 'bottom':\n camera.rotation.x += 0.01\n break\n case 'left':\n camera.rotation.y -= 0.01\n break\n case 'right':\n camera.rotation.y += 0.01\n break\n }\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n }\n\n let clock\n let longPress\n let time\n\n btnSpan.addEventListener('mousedown', () => {\n clock = new Clock()\n clock.getDelta()\n\n time = setTimeout(() => {\n longPress = use.useframe(handleClick)\n }, 500)\n })\n\n btnSpan.addEventListener('mouseup', () => {\n if (clock.getDelta() < 0.5)\n handleClick()\n\n clearTimeout(time)\n longPress && longPress()\n })\n\n // btnSpan.addEventListener('click', handleClick)\n op.appendChild(btnSpan)\n })\n\n // 滑动条\n const sliderDiv = document.createElement('div')\n sliderDiv.className = 'dialog-slider-container'\n const sliderBar = document.createElement('input')\n sliderBar.type = 'range'\n sliderBar.min = '30'\n sliderBar.max = '120'\n sliderBar.value = '90'\n sliderBar.className = 'dialog-slider'\n sliderBar.addEventListener('input', () => {\n camera.fov = sliderBar.value\n camera.updateProjectionMatrix()\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n sliderDiv.appendChild(sliderBar)\n dialogDiv.appendChild(sliderDiv)\n\n const borderMesh = new Css2DPoi(dialogDiv)\n borderMesh.position.copy(sprite.position)\n return borderMesh\n }\n\n addStyle() {\n // 设置 CSS 规则\n const css = `\n .page-mask{\n position: fixed;\n top: 0;\n left: 0;\n bottom:0;\n right:0;\n //width: 100%;\n //height: 100%;\n background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */\n //filter: blur(10px); /* 模糊效果 */\n z-index: 1 !important; /* 确保蒙版位于其他元素之上 */\n }\n .dialog-mask{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 36px;\n height: 36px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 28px;\n top: 28px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 20px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 17px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 152px;\n height: 152px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 20px;\n bottom: 20px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-bottom: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n top: 25px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-top: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n bottom: 25px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-right: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n left: 25px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-left: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n right: 25px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 17px;\n height: 420px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:36px;\n top:120px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 420px;\n height: 17px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -202px;\n margin-top: 200px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 9px;\n height: 36px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 9px;\n height: 36px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n`\n // 创建一个 <style> 元素\n const styleElement = document.createElement('style')\n styleElement.appendChild(document.createTextNode(css))\n // 将 <style> 元素添加到 <head> 中\n document.head.appendChild(styleElement)\n }\n\n close() {\n if (this.cuteSprites) {\n this.cuteSprites.forEach((mesh) => {\n mesh.remove()\n mesh.removeFromParent()\n })\n this.cuteSprites.length = 0\n }\n this.eventList.has('close') && this.eventList.get('close')()\n // 移除事件监听\n this.eventListener.forEach((fn) => {\n fn()\n })\n this.eventListener.clear()\n this.eventList.clear()\n }\n}\n\nclass HeadMap {\n TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n }\n\n eventList: Map<string, Function> = new Map()\n backEle: HTMLElement\n heatMapPlane: Mesh\n canvasList = []\n isShow = false\n\n constructor() {\n\n }\n\n // 热力图\n create(distance) {\n this.isShow = true\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: this.TemperatureColorStops,\n })\n let len = 1200\n const width = window.innerWidth\n const height = window.innerHeight\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 10)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n side: DoubleSide,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 0 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 0.8,\n },\n },\n })\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const { camera } = use.useScene()\n // 计算平面的尺寸\n const h = 2 * Math.tan(camera.fov * Math.PI / 360) * distance * 2 * 0.85\n const w = h * camera.aspect\n\n const heatMapGeometry = new PlaneGeometry(w, h, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n\n this.heatMapPlane = heatMapPlane\n return heatMapPlane\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n addBack() {\n this.backEle = document.createElement('div')\n this.backEle.className = 'hot-back'\n this.backEle.innerHTML = '返回'\n document.body.appendChild(this.backEle)\n this.backEle.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n // this.remove()\n })\n }\n\n createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n canvas.style.zIndex = '-1'\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n this.canvasList.push(canvas)\n return canvas\n }\n\n remove() {\n this.canvasList.forEach((canvas) => {\n canvas.remove()\n })\n // this.eventList.has('close') && this.eventList.get('close')()\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n this.isShow = false\n }\n}\n"],"mappings":";+CACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASA,gBAAgB,EAAEC,IAAI,EAAEC,cAAc,EAAEC,KAAK,EAAEC,KAAK,EAAEC,UAAU,EAASC,KAAK,EAAEC,SAAS,EAAEC,OAAO,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,WAAW,EAAEC,iBAAiB,EAAEC,aAAa,EAAEC,cAAc,EAAEC,MAAM,EAAEC,cAAc,EAAEC,OAAO,EAAEC,aAAa,EAAEC,OAAO,EAAqBC,IAAI,EAAEC,GAAG,QAAe,eAAe;AACxT,SAASC,QAAQ,EAAEC,SAAS,QAAQ,kBAAkB;AACtD,OAAOC,OAAO,MAAM,eAAe;AACnC,SAASC,WAAW,EAAEC,aAAa;AACnC,SAASC,cAAc;AACvB,SAASC,cAAc,EAAEC,OAAO;;AAEhC;;AAGA;AACA,SAASC,SAAS;AAElB,IAAMC,IAAI,GAAG,IAAIpB,WAAW,EAAE;AAAA,IACxBqB,SAAS;EAYb,mBAAYC,KAAgB,EAAE;IAAA;IAAA;IAAA,oCAVG,IAAIC,GAAG,EAAE;IAAA,kCACP,IAAIA,GAAG,EAAE;IAAA;IAAA;IAAA,uCAGb,IAAIC,GAAG,EAAE;IAAA;IAAA;IAAA;IAOtC,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACG,YAAY,GAAG,IAAIC,MAAM,CAAC,IAAI,CAAC;IACpC,IAAI,CAACD,YAAY,CAACE,QAAQ,EAAE;EAC9B;EAAC;IAAA;IAAA;MAAA,iFAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACsBP,IAAI,CAACQ,QAAQ,WAAIV,OAAO,mBAAgB,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAACW,IAAI,EAAK;gBAC7F,OAAOA,IAAI;cACb,CAAC,CAAC;YAAA;cAFIC,KAAK;cAIXC,MAAM,CAACC,IAAI,CAACb,SAAS,CAAC,CAACc,OAAO;gBAAA,sEAAC,iBAAOC,GAAW;kBAAA;kBAAA;kBAAA;oBAAA;sBAAA;wBAC/C;wBACMC,MAAM,GAAGhB,SAAS,CAACe,GAAG,CAAC;wBACvBE,KAAK,GAAG,IAAIzC,KAAK,EAAE;wBACzByC,KAAK,CAACC,IAAI,GAAGF,MAAM,CAACG,MAAM,CAACC,EAAE;wBACvBC,MAAM,GAAG,IAAI5B,SAAS,WAAIM,OAAO,iBAAc;0BAAEuB,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;wBAAE,CAAC,CAAC;wBAC5ED,MAAM,CAACE,QAAQ,CAACC,CAAC,GAAGC,IAAI,CAACC,EAAE;wBACrBC,QAAQ,GAAG,IAAItC,OAAO,EAAE,CAACuC,SAAS,CAACZ,MAAM,CAACG,MAAM,CAACQ,QAAQ,CAAC;wBAChEN,MAAM,CAACM,QAAQ,CAACE,IAAI,CAACF,QAAQ,CAAC;wBAC9BV,KAAK,CAACa,GAAG,CAACT,MAAM,CAAC;wBAEXU,IAAI,GAAGpB,KAAK,CAACqB,KAAK,CAACC,KAAK,EAAE;wBAChCF,IAAI,CAACT,KAAK,CAACY,SAAS,CAAC,CAAC,CAAC;wBACvBH,IAAI,CAACR,QAAQ,CAACY,CAAC,GAAI,CAACV,IAAI,CAACC,EAAE,GAAG,CAAC,GAAI,GAAG;wBACtCK,IAAI,CAACJ,QAAQ,CAACE,IAAI,CAACF,QAAQ,CAACM,KAAK,EAAE,CAACH,GAAG,CAAC,IAAIzC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC/D4B,KAAK,CAACa,GAAG,CAACC,IAAI,CAAC;wBAEf,KAAI,CAACK,UAAU,CAACC,GAAG,CAACrB,MAAM,CAACsB,KAAK,EAAErB,KAAK,CAAC;wBACxC,KAAI,CAACd,KAAK,CAACoC,kBAAkB,CAACT,GAAG,CAACb,KAAK,CAAC;wBACxC,KAAI,CAACuB,WAAW,CAACvB,KAAK,EAAED,MAAM,CAAC;wBAC/B,KAAI,CAACb,KAAK,CAAC6B,KAAK,CAACF,GAAG,CAACb,KAAK,CAAC;;wBAE3B;wBACMwB,KAAK,GAAG,IAAIC,YAAY,EAAE;wBAChC,sBAAA1B,MAAM,CAAC2B,UAAU,uDAAjB,mBAAmB7B,OAAO,CAAC,UAAC8B,IAAI,EAAK;0BACnC,IAAIC,IAAI;0BACR,IAAID,IAAI,CAACE,IAAI,EAAE;4BACbD,IAAI,GAAG,IAAIpD,SAAS,WAAIM,OAAO,kBAAe;8BAAEuB,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;4BAAE,CAAC,CAAC;4BACrE,KAAI,CAACnB,KAAK,CAACoC,kBAAkB,CAACT,GAAG,CAACe,IAAI,CAAC;4BACvC,KAAI,CAACE,UAAU,CAACF,IAAI,EAAE7B,MAAM,CAAC;4BAC7B;4BACA1B,IAAI,CAAC0D,EAAE,CAACH,IAAI,CAAClB,QAAQ,EAAE;8BACrBH,CAAC,EAAE,KAAK;8BAAE;8BACVyB,QAAQ,EAAE,GAAG;8BAAE;8BACfC,IAAI,EAAE,cAAc;8BAAE;8BACtBC,IAAI,EAAE,IAAI;8BAAE;8BACZC,MAAM,EAAE,CAAC,CAAC,CAAE;4BACd,CAAC,CAAC;0BACJ,CAAC,MACI;4BACHP,IAAI,GAAGJ,KAAK,CAACY,MAAM,EAAE;0BACvB;0BACAR,IAAI,CAAClB,QAAQ,CAACE,IAAI,CAAC,IAAIxC,OAAO,EAAE,CAACuC,SAAS,CAACgB,IAAI,CAACjB,QAAQ,CAAC,CAAC;0BAC1D,KAAI,CAAC2B,QAAQ,CAACjB,GAAG,CAACrB,MAAM,CAACsB,KAAK,EAAEO,IAAI,CAAC;0BAErC,KAAI,CAAC1C,KAAK,CAAC6B,KAAK,CAACF,GAAG,CAACe,IAAI,CAAC;wBAC5B,CAAC,CAAC;sBAAA;sBAAA;wBAAA;oBAAA;kBAAA;gBAAA,CACH;gBAAA;kBAAA;gBAAA;cAAA,IAAC;cACF;cACIU,aAAa,GAAG,IAAI,EAAC;cAEnBC,OAAO,GAAGjE,GAAG,CAACkE,QAAQ,CAAC,YAAM;gBACjC,KAAI,CAACrB,UAAU,CAACtB,OAAO,CAAC,UAACG,KAAK,EAAK;kBACjC,IAAMc,IAAI,GAAGd,KAAK,CAACyC,QAAQ,CAAC,CAAC,CAAC;kBAC9B;kBACA,IAAIH,aAAa,EAAE;oBACjB;oBACAxB,IAAI,CAACR,QAAQ,CAACoC,CAAC,IAAI,KAAK;kBAC1B,CAAC,MACI;oBACH;oBACA5B,IAAI,CAACR,QAAQ,CAACoC,CAAC,IAAI,KAAK;kBAC1B;;kBAEA;kBACA,IAAIlC,IAAI,CAACmC,GAAG,CAAC7B,IAAI,CAACR,QAAQ,CAACoC,CAAC,CAAC,IAAIlC,IAAI,CAACmC,GAAG,CAACnC,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC,EAAE;oBACtD;oBACA6B,aAAa,GAAG,CAACA,aAAa;kBAChC;gBACF,CAAC,CAAC;cACJ,CAAC,CAAC;cACF,IAAI,CAACM,aAAa,CAAC/B,GAAG,CAAC0B,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CAChC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,qBAAYnC,MAAa,EAAEL,MAAW,EAAE;MAAA;MACtC,IAAM8C,EAAE;QAAA,uEAAG;UAAA;UAAA;YAAA;cAAA;gBAAA,KACL,MAAI,CAACC,iBAAiB;kBAAA;kBAAA;gBAAA;gBAClBC,OAAO,GAAG,MAAI,CAACD,iBAAiB,CAAC7C,IAAI,KAAKF,MAAM,CAACG,MAAM,CAACD,IAAI;gBAClE,MAAI,CAACZ,YAAY,CAAC2D,KAAK,EAAE;gBAAA,KACrBD,OAAO;kBAAA;kBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;cAAA;gBAIX,IAAI,MAAI,CAACE,OAAO,IAAI,MAAI,CAACA,OAAO,CAACC,MAAM,EAAE;kBACvC,MAAI,CAACC,WAAW,EAAE;gBACpB,CAAC,MACI;kBAAA,gBACgB7E,GAAG,CAAC8E,QAAQ,EAAE,EAAzBlD,MAAM,iBAANA,MAAM;kBACd,MAAI,CAACmD,aAAa,GAAGnD,MAAM,CAACQ,QAAQ,CAACM,KAAK,EAAE;kBAC5C;kBACA,MAAI,CAACsC,YAAY,GAAG,IAAIlF,OAAO,EAAE,EAAC;kBAClC8B,MAAM,CAACqD,iBAAiB,CAAC,MAAI,CAACD,YAAY,CAAC,EAAC;gBAC9C;cAAC;gBAGH3E,aAAa,CAACD,WAAW,CAAC8E,KAAK,EAAE,gBAAgB,EAAE5E,cAAc,CAAC6E,OAAO,EAAEC,SAAS,EAAE;kBAAEvD,EAAE,EAAEJ,MAAM,CAACG,MAAM,CAACC;gBAAG,CAAC,CAAC;gBAEzGO,QAAQ,GAAG,IAAItC,OAAO,EAAE,CAACuC,SAAS,CAACZ,MAAM,CAACG,MAAM,CAACQ,QAAQ,CAAC;gBAC1DiD,cAAwC,GAAGjD,QAAQ,CAACM,KAAK,EAAE,CAAC4C,OAAO,EAAE;gBACrEC,cAAwC,GAAGnD,QAAQ,CAACM,KAAK,EAAE,CAACH,GAAG,CAAC,IAAIzC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAACwF,OAAO,EAAE;gBAEvG,MAAI,CAAC1E,KAAK,CAAC4E,UAAU,CAAC1C,GAAG,CAAC;kBACxBV,QAAQ,EAAEmD,cAAc;kBACxBE,MAAM,EAAEJ;gBACV,CAAC,CAAC;gBAAA;gBAAA,OAE6B,MAAI,CAACtE,YAAY,CAAC2E,OAAO,CAACtD,QAAQ,EAAEA,QAAQ,CAACM,KAAK,EAAE,CAACH,GAAG,CAAC,IAAIzC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;cAAA;gBAAhH,MAAI,CAAC0E,iBAAiB;gBACtB,MAAI,CAACzD,YAAY,CAAC4E,gBAAgB,CAAC,OAAO,EAAE,YAAM;kBAChD;kBACA,MAAI,CAAC/E,KAAK,CAAC4E,UAAU,CAAC1C,GAAG,CAAC;oBACxBV,QAAQ,EAAE,MAAI,CAAC2C,aAAa,CAACO,OAAO,EAAE;oBACtCG,MAAM,EAAE,MAAI,CAACT,YAAY,CAACM,OAAO;kBACnC,CAAC,CAAC;kBACF,MAAI,CAACd,iBAAiB,GAAG,IAAI;kBAC7BnE,aAAa,CAACD,WAAW,CAAC8E,KAAK,EAAE,sBAAsB,EAAE5E,cAAc,CAAC6E,OAAO,EAAEC,SAAS,EAAE;oBAAEvD,EAAE,EAAEJ,MAAM,CAACG,MAAM,CAACC;kBAAG,CAAC,CAAC;gBACvH,CAAC,CAAC;gBACF,MAAI,CAAC2C,iBAAiB,CAAC7C,IAAI,GAAGF,MAAM,CAACG,MAAM,CAACD,IAAI;gBAChD,MAAI,CAACf,KAAK,CAAC6B,KAAK,CAACF,GAAG,CAAC,MAAI,CAACiC,iBAAiB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA,CAC7C;QAAA,gBA3CKD,EAAE;UAAA;QAAA;MAAA,GA2CP;MAEDzC,MAAM,CAAC6D,gBAAgB,CAAC,OAAO,EAAEpB,EAAE,CAAC;MACpC,IAAI,CAACD,aAAa,CAAC/B,GAAG,CAAC;QAAA,OAAMT,MAAM,CAAC8D,mBAAmB,CAAC,OAAO,EAAErB,EAAE,CAAC;MAAA,EAAC;IACvE;EAAC;IAAA;IAAA,OAED,oBAAWzC,MAAiB,EAAEL,MAAM,EAAE;MAAA;MACpC,qBAAmBzB,GAAG,CAAC8E,QAAQ,EAAE;QAAzBlD,MAAM,kBAANA,MAAM;MACd,IAAI,CAAC+C,OAAO,GAAG,IAAIkB,OAAO,EAAE;MAC5B,IAAMC,OAAO,GAAGhE,MAAM,CAAC6D,gBAAgB,CAAC,OAAO,0EAAE;QAAA;QAAA;UAAA;YAAA;cAAA,IAC1C7D,MAAM,CAACiE,OAAO;gBAAA;gBAAA;cAAA;cAAA;YAAA;cAEnBjE,MAAM,CAACiE,OAAO,GAAG,KAAK;cACtB1F,aAAa,CAACD,WAAW,CAAC8E,KAAK,EAAE,oBAAoB,EAAE5E,cAAc,CAAC6E,OAAO,EAAEC,SAAS,EAAE;gBAAEvD,EAAE,EAAEJ,MAAM,CAAC2B,UAAU,CAAC,CAAC,CAAC,CAACvB;cAAG,CAAC,CAAC;cAC1H,MAAI,CAACmE,SAAS,CAAC,KAAK,CAAC;cACf5D,QAAQ,GAAG,IAAItC,OAAO,EAAE,CAACuC,SAAS,CAACZ,MAAM,CAAC2B,UAAU,CAAC,CAAC,CAAC,CAAChB,QAAQ,CAAC;cACjEmD,cAAc,GAAGnD,QAAQ,CAACM,KAAK,EAAE,CAACH,GAAG,CAAC,IAAIzC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;cAElE,MAAI,CAACiF,aAAa,GAAGnD,MAAM,CAACQ,QAAQ,CAACM,KAAK,EAAE;cAC5C;cACA,MAAI,CAACsC,YAAY,GAAG,IAAIlF,OAAO,EAAE,EAAC;cAClC8B,MAAM,CAACqD,iBAAiB,CAAC,MAAI,CAACD,YAAY,CAAC,EAAC;cAC5C,MAAI,CAACpE,KAAK,CAAC4E,UAAU,CAAC1C,GAAG,CAAC;gBACxBV,QAAQ,EAAEmD,cAAc,CAACD,OAAO,EAAE;gBAClCG,MAAM,EAAErD,QAAQ,CAACM,KAAK,EAAE,CAAC4C,OAAO;cAClC,CAAC,CAAC,CAACW,IAAI,CAAC,YAAM;gBACZ,IAAM3C,IAAI,GAAG,MAAI,CAACqB,OAAO,CAACb,MAAM,CAACyB,cAAc,CAACW,UAAU,CAAC9D,QAAQ,CAAC,CAAC;gBACrEkB,IAAI,CAAClB,QAAQ,CAACE,IAAI,CAACR,MAAM,CAACM,QAAQ,CAAC;gBACnCkB,IAAI,CAAClB,QAAQ,CAACH,CAAC,GAAG,GAAG;gBACrB,MAAI,CAACrB,KAAK,CAAC6B,KAAK,CAACF,GAAG,CAACe,IAAI,CAAC;gBAE1B,qBAA0BtD,GAAG,CAAC8E,QAAQ,EAAE;kBAAhCqB,aAAa,kBAAbA,aAAa;gBACrBA,aAAa,CAACC,OAAO,GAAG,KAAK;;gBAE7B;gBACA,MAAI,CAACzB,OAAO,CAACgB,gBAAgB,CAAC,OAAO,EAAE,YAAM;kBAC3C,MAAI,CAACd,WAAW,EAAE;kBAClB;;kBAEA;kBACA;kBACA;kBACA;gBACF,CAAC,CAAC;cACJ,CAAC,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACH,GAAC;MACF,IAAI,CAACP,aAAa,CAAC/B,GAAG,CAACuD,OAAO,CAAC;IACjC;EAAC;IAAA;IAAA,OAED,uBAAc;MACZ,IAAI,CAAC,IAAI,CAACnB,OAAO,EACf;MACF,IAAI,CAACA,OAAO,CAAC0B,MAAM,EAAE;MACrB,IAAI,CAACL,SAAS,CAAC,IAAI,CAAC;MAEpB,IAAI,CAACpF,KAAK,CAAC4E,UAAU,CAAC1C,GAAG,CAAC;QACxBV,QAAQ,EAAE,IAAI,CAAC2C,aAAa,CAACO,OAAO,EAAE;QACtCG,MAAM,EAAE,IAAI,CAACT,YAAY,CAACM,OAAO;MACnC,CAAC,CAAC;MACF,qBAA0BtF,GAAG,CAAC8E,QAAQ,EAAE;QAAhCqB,aAAa,kBAAbA,aAAa;MACrBA,aAAa,CAACC,OAAO,GAAG,IAAI;IAC9B;EAAC;IAAA;IAAA,OAED,qBAA0B;MAAA,IAAhBL,OAAO,uEAAG,IAAI;MACtB,IAAI,CAAChC,QAAQ,CAACxC,OAAO,CAAC,UAACO,MAAM,EAAK;QAChCA,MAAM,CAACiE,OAAO,GAAGA,OAAO;MAC1B,CAAC,CAAC;MACF,IAAI,CAAClD,UAAU,CAACtB,OAAO,CAAC,UAACO,MAAM,EAAK;QAClCA,MAAM,CAACiE,OAAO,GAAGA,OAAO;MAC1B,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,kBAAS;MACP;MACA,IAAI,CAAClD,UAAU,CAACtB,OAAO,CAAC,UAACO,MAAM,EAAK;QAClCA,MAAM,CAACwE,gBAAgB,EAAE;QACzBxE,MAAM,CAACuE,MAAM,EAAE;MACjB,CAAC,CAAC;MACF,IAAI,CAACxD,UAAU,CAAC0D,KAAK,EAAE;MACvB,IAAI,CAACxC,QAAQ,CAACxC,OAAO,CAAC,UAACO,MAAM,EAAK;QAChCA,MAAM,CAACwE,gBAAgB,EAAE;QACzBxE,MAAM,CAACuE,MAAM,EAAE;MACjB,CAAC,CAAC;MACF,IAAI,CAACtC,QAAQ,CAACwC,KAAK,EAAE;MACrB,IAAI,CAACjC,aAAa,CAAC/C,OAAO,CAAC,UAACgD,EAAE,EAAK;QACjCA,EAAE,EAAE;MACN,CAAC,CAAC;MACF;MACA,IAAI,IAAI,CAACI,OAAO,EAAE;QAChB,IAAI,CAACA,OAAO,CAAC0B,MAAM,EAAE;QACrB,qBAA0BrG,GAAG,CAAC8E,QAAQ,EAAE;UAAhCqB,aAAa,kBAAbA,aAAa;QACrBA,aAAa,CAACC,OAAO,GAAG,IAAI;MAC9B;MACA,IAAI,CAAC9B,aAAa,CAACiC,KAAK,EAAE;MAE1B,IAAI,CAACxF,YAAY,CAAC2D,KAAK,EAAE;IAC3B;EAAC;EAAA;AAAA;AAGH,eAAe/D,SAAS;AAAA,IAElBwC,YAAY;EAChB,wBAAc;IAAA;EAEd;EAAC;IAAA;IAAA,OAED,kBAAS;MACP;;MAEA,IAAMqD,QAAQ,GAAG,IAAIhH,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC;MAC1C,IAAMiH,OAAO,GAAG,IAAI5G,aAAa,CAACU,cAAc,CAAC,CAACG,IAAI,WAAIF,OAAO,oBAAiB;MAClF,IAAMkG,MAAM,GAAG,IAAItH,IAAI,CAACoH,QAAQ,EAAE,IAAInH,iBAAiB,CAAC;QACtDsH,GAAG,EAAEF,OAAO;QACZG,IAAI,EAAE5H,UAAU;QAChB6H,WAAW,EAAE;MACf,CAAC,CAAC,CAAC;MACHH,MAAM,CAACI,OAAO,CAAC,CAAC5E,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;MAC5B,OAAOuE,MAAM;IACf;;IAEA;EAAA;IAAA;IAAA,OACA,sBAAa;MACX;;MAEA,IAAMhF,KAAK,GAAG,IAAIzC,KAAK,EAAE;MACzB,IAAMuH,QAAQ,GAAG,IAAI3H,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC;MAC1C;MACA,IAAMkI,QAAQ,GAAG,IAAItH,cAAc,CAAC;QAClCuH,YAAY,qNAKX;QACDC,cAAc,4jCAab;QACDC,QAAQ,EAAEvI,gBAAgB;QAC1BwI,SAAS,EAAE,KAAK;QAChBN,WAAW,EAAE,IAAI;QACjBD,IAAI,EAAE5H;MACR,CAAC,CAAC;MACF,IAAM0H,MAAM,GAAG,IAAItH,IAAI,CAACoH,QAAQ,EAAE,IAAInH,iBAAiB,CAAC;QAAE+H,KAAK,EAAE;MAAU,CAAC,CAAC,CAAC;MAC9E,IAAMC,SAAS,GAAG,GAAG,EAAC;;MAEtB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,SAAS,EAAEC,CAAC,EAAE,EAAE;QAClC,IAAM1E,CAAC,GAAGV,IAAI,CAACqF,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,EAAC;QACpC,IAAMnD,CAAC,GAAGlC,IAAI,CAACqF,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,EAAC;QACpC,IAAMrE,KAAK,GAAGwD,MAAM,CAAChE,KAAK,EAAE;QAC5BQ,KAAK,CAACd,QAAQ,CAACE,IAAI,CAAC,IAAIxC,OAAO,CAAC8C,CAAC,EAAE,KAAK,EAAEwB,CAAC,CAAC,CAAC;QAC7ClB,KAAK,CAAC4D,OAAO,CAAC,CAAC5E,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;QAC3BT,KAAK,CAACa,GAAG,CAACW,KAAK,CAAC;MAClB;MAEA,OAAOxB,KAAK;IACd;EAAC;EAAA;AAAA;AAAA,IAGGV,MAAM;EAWV,gBAAYwG,YAAY,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,qCAJK,EAAE;IAAA,uCACF,IAAI1G,GAAG,EAAE;IAAA,mCACL,IAAID,GAAG,EAAE;IAG1C,IAAI,CAAC4G,MAAM,GAAGD,YAAY;EAC5B;EAAC;IAAA;IAAA;MAAA,0EAED,kBAAcpF,QAAQ,EAAEsF,cAAc;QAAA;QAAA;QAAA;UAAA;YAAA;cACpC,IAAI,CAAChD,KAAK,EAAE;cACZ,IAAI,CAAC9C,MAAM,GAAG,IAAIrC,iBAAiB,CACjC,EAAE,EAAEoI,MAAM,CAACC,UAAU,GAAGD,MAAM,CAACE,WAAW,EAAE,GAAG,EAAE,KAAK,CACvD;cACD,IAAI,CAACjG,MAAM,CAACQ,QAAQ,CAACE,IAAI,CAACoF,cAAc,CAAC;cACzC,IAAI,CAAC9F,MAAM,CAACI,QAAQ,CAACc,GAAG,CAAC,CAACZ,IAAI,CAACC,EAAE,GAAG,CAAC,EAAED,IAAI,CAACC,EAAE,EAAE,CAAC,CAAC;cAAA,wBAEvB,IAAI,CAACsF,MAAM,CAAC7G,KAAK,CAAC6B,KAAK,CAACqF,oBAAoB,CAAC,IAAI,CAAClG,MAAM,CAAC,EAA5E6E,OAAO,yBAAPA,OAAO,EAAE/B,KAAK,yBAALA,KAAK;cAEhBqD,UAAU,GAAG,IAAIrI,MAAM,CAAC,IAAIC,cAAc,CAAC;gBAAEgH,GAAG,EAAEF,OAAO;gBAAEU,SAAS,EAAE,KAAK;gBAAEa,UAAU,EAAE;cAAM,CAAC,CAAC,CAAC;cACxGD,UAAU,CAACE,MAAM,CAACnF,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;cAC/BiF,UAAU,CAACG,WAAW,GAAG,CAAC;cAC1BH,UAAU,CAAC3F,QAAQ,CAACE,IAAI,CAACF,QAAQ,CAAC;cAE5B6B,OAAO,GAAGjE,GAAG,CAACkE,QAAQ,CAAC,YAAM;gBACjC,MAAI,CAACiE,WAAW,CAACJ,UAAU,CAAC;cAC9B,CAAC,CAAC;cACF,IAAI,CAACzD,aAAa,CAAC/B,GAAG,CAAC0B,OAAO,CAAC;cAAA,kCAExB,IAAImE,OAAO,CAAC,UAACC,OAAO,EAAK;gBAC9BC,UAAU,CAAC,YAAM;kBACf,IAAMC,UAAU,GAAG,MAAI,CAACC,aAAa,CAAC,MAAI,CAAC5G,MAAM,EAAEmG,UAAU,CAAC;kBAC9D,IAAMrG,KAAK,GAAG,IAAIzC,KAAK,EAAE;kBACzByC,KAAK,CAACa,GAAG,CAACgG,UAAU,CAAC;kBACrB7G,KAAK,CAACa,GAAG,CAACwF,UAAU,CAAC;kBACrB,MAAI,CAACU,WAAW,CAACC,IAAI,CAACH,UAAU,CAAC;kBACjC,MAAI,CAACE,WAAW,CAACC,IAAI,CAACX,UAAU,CAAC;kBACjCrD,KAAK,EAAE;kBACP2D,OAAO,CAAC3G,KAAK,CAAC;gBAChB,CAAC,EAAE,IAAI,CAAC;cACV,CAAC,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACH;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,mBAAUgG,cAAc,EAAyB;MAAA,IAAvB1F,QAAQ,uEAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;MAC7C;MACA,IAAM2G,MAAM,GAAGzJ,SAAS,CAAC0J,QAAQ,CAAC5G,QAAQ,CAAC,CAAC,CAAC,CAAC;MAC9C,IAAM6G,MAAM,GAAG3J,SAAS,CAAC0J,QAAQ,CAAC5G,QAAQ,CAAC,CAAC,CAAC,CAAC;MAC9C,IAAM8G,MAAM,GAAG5J,SAAS,CAAC0J,QAAQ,CAAC5G,QAAQ,CAAC,CAAC,CAAC,CAAC;;MAE9C;MACA,IAAM+G,cAAc,GAAG,IAAI5J,OAAO,EAAE;MACpC4J,cAAc,CAACC,aAAa,CAACL,MAAM,CAAC;MACpCI,cAAc,CAACE,QAAQ,CAAC,IAAI9J,OAAO,EAAE,CAAC+J,aAAa,CAACL,MAAM,CAAC,CAAC;MAC5DE,cAAc,CAACE,QAAQ,CAAC,IAAI9J,OAAO,EAAE,CAACgK,aAAa,CAACL,MAAM,CAAC,CAAC;;MAE5D;MACA,IAAMM,eAAe,GAAG,IAAItJ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;MAE5C;MACA,IAAMuJ,eAAe,GAAGD,eAAe,CAAC1G,KAAK,EAAE,CAAC4G,YAAY,CAACP,cAAc,CAAC;;MAE5E;MACA,OAAOrB,cAAc,CAAChF,KAAK,EAAE,CAACH,GAAG,CAAC8G,eAAe,CAAC;IACpD;EAAC;IAAA;IAAA,OAED,oBAAWvH,MAAc,EAAE;MACzB,qBAAmB9B,GAAG,CAAC8E,QAAQ,EAAE;QAAzBlD,MAAM,kBAANA,MAAM;;MAEd;MACA,IAAM2H,gBAAgB,GAAG5B,MAAM,CAAC4B,gBAAgB,IAAI,CAAC;MACrD;MACA,IAAMC,IAAI,GAAG,IAAI5K,IAAI,EAAE,CAAC6K,aAAa,CAAC3H,MAAM,CAAC;MAC7C;MACA,IAAM4H,GAAG,GAAGF,IAAI,CAACE,GAAG,CAACC,OAAO,CAAC/H,MAAM,CAAC;MACpC,IAAMgI,GAAG,GAAGJ,IAAI,CAACI,GAAG,CAACD,OAAO,CAAC/H,MAAM,CAAC;MAEpC,YAAa,CAAC+F,MAAM,CAACC,UAAU,EAAED,MAAM,CAACE,WAAW,CAAC;QAA/CgC,CAAC;QAAEC,CAAC;MACT,IAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;MAC1C,IAAIF,GAAG,EAAE;QACPF,CAAC,GAAGE,GAAG,CAACG,WAAW;QACnBJ,CAAC,GAAGC,GAAG,CAACI,YAAY;MACtB;MACA,IAAIC,KAAK,GAAG,CAAC;MACb,IAAIxI,MAAM,CAACyI,GAAG,IAAI,EAAE,EAClBD,KAAK,GAAG,CAAC,IAAI,IAAIxI,MAAM,CAACyI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,MAEtCD,KAAK,GAAG,IAAI,IAAI,EAAE,GAAGxI,MAAM,CAACyI,GAAG,CAAC,GAAG,EAAE;;MAEvC;MACA,IAAIC,KAAK,GAAG,CAACV,GAAG,CAAChH,CAAC,GAAG8G,GAAG,CAAC9G,CAAC,IAAIiH,CAAC,GAAGN,gBAAgB,IAAI,IAAI,GAAGa,KAAK,CAAC;MACnE,IAAIG,MAAM,GAAG,CAACX,GAAG,CAAC3H,CAAC,GAAGyH,GAAG,CAACzH,CAAC,IAAI6H,CAAC,GAAGP,gBAAgB,IAAI,KAAK,GAAGa,KAAK,CAAC;MAErE,IAAMI,WAAW,GAAGjB,gBAAgB,GAAG,GAAG;MAC1C;MACAe,KAAK,IAAIE,WAAW;MACpBD,MAAM,IAAIC,WAAW;MAErB,OAAO;QAAEF,KAAK,EAALA,KAAK;QAAEC,MAAM,EAANA;MAAO,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,qBAAYzI,MAAc,EAAE;MAC1B,qBAAmB9B,GAAG,CAAC8E,QAAQ,EAAE;QAAzBlD,MAAM,kBAANA,MAAM;MACd,IAAMwI,KAAK,GAAG,EAAE,GAAGxI,MAAM,CAACyI,GAAG;MAC7B;MACA,IAAMI,WAAW,GAAG,GAAG;MACvB,IAAMC,WAAW,GAAG,OAAO;MAC3B;MACA,IAAMhD,cAAc,GAAG9F,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEQ,QAAQ;MACvC,IAAMuI,cAAc,GAAG7I,MAAM,CAACM,QAAQ;;MAEtC;MACA,IAAMwI,QAAQ,GAAG,CAAAlD,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAExB,UAAU,CAACyE,cAAc,CAAC,KAAI,GAAG;;MAElE;MACA,IAAME,eAAe,GAAG3I,IAAI,CAAC0H,GAAG,CAACa,WAAW,EAAEvI,IAAI,CAACwH,GAAG,CAACgB,WAAW,EAAEE,QAAQ,CAAC,CAAC;MAC9E;MACA;MACA9I,MAAM,CAACC,KAAK,CAACO,IAAI,CAAC,IAAIxC,OAAO,CAAC+K,eAAe,IAAI,MAAM,GAAGT,KAAK,CAAC,EAAG,MAAM,GAAGA,KAAK,GAAIS,eAAe,EAAE,CAAC,CAAC,CAAC;IAC3G;EAAC;IAAA;IAAA,OAED,0BAAiBC,SAAS,EAAEvG,EAAE,EAAE;MAC9B,IAAI,IAAI,CAACwG,SAAS,CAACC,GAAG,CAACF,SAAS,CAAC,EAC/B,IAAI,CAACC,SAAS,CAACD,SAAS,CAAC,GAAGvG,EAAE,MAE9B,IAAI,CAACwG,SAAS,CAACjI,GAAG,CAACgI,SAAS,EAAEvG,EAAE,CAAC;IACrC;EAAC;IAAA;IAAA,OAED,uBAAc3C,MAAM,EAAEE,MAAc,EAAE;MAAA;MACpC,uBAAwB,IAAI,CAACmJ,UAAU,CAACnJ,MAAM,CAAC;QAAzCwI,KAAK,oBAALA,KAAK;QAAEC,MAAM,oBAANA,MAAM;;MAEnB;MACA,IAAMW,SAAS,GAAGlB,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MAC/Cb,KAAK,IAAI,EAAE;MACXC,MAAM,IAAI,EAAE;MACZlJ,MAAM,CAAC+J,MAAM,CAACF,SAAS,CAACG,KAAK,EAAE;QAC7B,OAAO,YAAKf,KAAK,OAAI;QACrB,QAAQ,YAAKC,MAAM,OAAI;QACvB,SAAS,EAAE,cAAc;QACzB,iBAAiB,gBAAS/J,OAAO,mBAAgB;QACjD,gBAAgB,EAAE,WAAW;QAC7B,kBAAkB,EAAE,WAAW;QAC/B,UAAU,EAAE;;QAEd;QACA;MACA,CAAC,CAAC;;MAEF,IAAM8K,UAAU,GAAGtB,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MAChDG,UAAU,CAACC,SAAS,GAAG,aAAa;MACpCL,SAAS,CAACM,WAAW,CAACF,UAAU,CAAC;;MAEjC;MACA,IAAMG,SAAS,GAAGzB,QAAQ,CAACmB,aAAa,CAAC,MAAM,CAAC;MAChDM,SAAS,CAACF,SAAS,GAAG,cAAc;MACpCE,SAAS,CAAC9F,gBAAgB,CAAC,OAAO,EAAE,YAAM;QACxC,MAAI,CAACjB,KAAK,EAAE;MACd,CAAC,CAAC;MACF,IAAMgH,KAAK,GAAG1B,QAAQ,CAACmB,aAAa,CAAC,MAAM,CAAC;MAC5CO,KAAK,CAACH,SAAS,GAAG,uCAAuC;MACzDE,SAAS,CAACD,WAAW,CAACE,KAAK,CAAC;MAC5B,IAAMC,KAAK,GAAG3B,QAAQ,CAACmB,aAAa,CAAC,MAAM,CAAC;MAC5CQ,KAAK,CAACJ,SAAS,GAAG,uCAAuC;MACzDE,SAAS,CAACD,WAAW,CAACG,KAAK,CAAC;MAC5BT,SAAS,CAACM,WAAW,CAACC,SAAS,CAAC;;MAEhC;MACA,IAAMG,EAAE,GAAG5B,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MACxCS,EAAE,CAACL,SAAS,GAAG,gBAAgB;MAC/BL,SAAS,CAACM,WAAW,CAACI,EAAE,CAAC;MACzB,IAAMC,MAAM,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;MACjDA,MAAM,CAACtK,OAAO,CAAC,UAACC,GAAG,EAAK;QACtB,IAAMsK,OAAO,GAAG9B,QAAQ,CAACmB,aAAa,CAAC,MAAM,CAAC;QAC9CW,OAAO,CAACP,SAAS,+CAAwC/J,GAAG,CAAE;QAE9D,IAAMuK,WAAW,GAAG,SAAdA,WAAW,GAAS;UACxB,QAAQvK,GAAG;YACT,KAAK,KAAK;cACRI,MAAM,CAACI,QAAQ,CAACY,CAAC,IAAI,IAAI;cACzB;YACF,KAAK,QAAQ;cACXhB,MAAM,CAACI,QAAQ,CAACY,CAAC,IAAI,IAAI;cACzB;YACF,KAAK,MAAM;cACThB,MAAM,CAACI,QAAQ,CAACC,CAAC,IAAI,IAAI;cACzB;YACF,KAAK,OAAO;cACVL,MAAM,CAACI,QAAQ,CAACC,CAAC,IAAI,IAAI;cACzB;UAAK;UAET,4BAA2B,MAAI,CAACwF,MAAM,CAAC7G,KAAK,CAAC6B,KAAK,CAACqF,oBAAoB,CAAClG,MAAM,CAAC;YAAvE6E,OAAO,yBAAPA,OAAO;YAAE/B,KAAK,yBAALA,KAAK;UACtB5C,MAAM,CAACiF,QAAQ,GAAG,IAAIpH,cAAc,CAAC;YAAEgH,GAAG,EAAEF,OAAO;YAAEU,SAAS,EAAE,KAAK;YAAEa,UAAU,EAAE;UAAM,CAAC,CAAC;UAC3FM,UAAU,CAAC;YAAA,OAAM5D,KAAK,EAAE;UAAA,GAAE,GAAG,CAAC;QAChC,CAAC;QAED,IAAIsH,KAAK;QACT,IAAIC,SAAS;QACb,IAAIC,IAAI;QAERJ,OAAO,CAACnG,gBAAgB,CAAC,WAAW,EAAE,YAAM;UAC1CqG,KAAK,GAAG,IAAIlN,KAAK,EAAE;UACnBkN,KAAK,CAACG,QAAQ,EAAE;UAEhBD,IAAI,GAAG5D,UAAU,CAAC,YAAM;YACtB2D,SAAS,GAAGjM,GAAG,CAACkE,QAAQ,CAAC6H,WAAW,CAAC;UACvC,CAAC,EAAE,GAAG,CAAC;QACT,CAAC,CAAC;QAEFD,OAAO,CAACnG,gBAAgB,CAAC,SAAS,EAAE,YAAM;UACxC,IAAIqG,KAAK,CAACG,QAAQ,EAAE,GAAG,GAAG,EACxBJ,WAAW,EAAE;UAEfK,YAAY,CAACF,IAAI,CAAC;UAClBD,SAAS,IAAIA,SAAS,EAAE;QAC1B,CAAC,CAAC;;QAEF;QACAL,EAAE,CAACJ,WAAW,CAACM,OAAO,CAAC;MACzB,CAAC,CAAC;;MAEF;MACA,IAAMO,SAAS,GAAGrC,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MAC/CkB,SAAS,CAACd,SAAS,GAAG,yBAAyB;MAC/C,IAAMe,SAAS,GAAGtC,QAAQ,CAACmB,aAAa,CAAC,OAAO,CAAC;MACjDmB,SAAS,CAACC,IAAI,GAAG,OAAO;MACxBD,SAAS,CAAC5C,GAAG,GAAG,IAAI;MACpB4C,SAAS,CAAC1C,GAAG,GAAG,KAAK;MACrB0C,SAAS,CAACE,KAAK,GAAG,IAAI;MACtBF,SAAS,CAACf,SAAS,GAAG,eAAe;MACrCe,SAAS,CAAC3G,gBAAgB,CAAC,OAAO,EAAE,YAAM;QACxC/D,MAAM,CAACyI,GAAG,GAAGiC,SAAS,CAACE,KAAK;QAC5B5K,MAAM,CAAC6K,sBAAsB,EAAE;QAC/B,6BAA2B,MAAI,CAAChF,MAAM,CAAC7G,KAAK,CAAC6B,KAAK,CAACqF,oBAAoB,CAAClG,MAAM,CAAC;UAAvE6E,OAAO,0BAAPA,OAAO;UAAE/B,KAAK,0BAALA,KAAK;QACtB5C,MAAM,CAACiF,QAAQ,GAAG,IAAIpH,cAAc,CAAC;UAAEgH,GAAG,EAAEF,OAAO;UAAEU,SAAS,EAAE,KAAK;UAAEa,UAAU,EAAE;QAAM,CAAC,CAAC;QAC3FM,UAAU,CAAC;UAAA,OAAM5D,KAAK,EAAE;QAAA,GAAE,GAAG,CAAC;MAChC,CAAC,CAAC;MACF2H,SAAS,CAACb,WAAW,CAACc,SAAS,CAAC;MAChCpB,SAAS,CAACM,WAAW,CAACa,SAAS,CAAC;MAEhC,IAAM9D,UAAU,GAAG,IAAItI,QAAQ,CAACiL,SAAS,CAAC;MAC1C3C,UAAU,CAACnG,QAAQ,CAACE,IAAI,CAACR,MAAM,CAACM,QAAQ,CAAC;MACzC,OAAOmG,UAAU;IACnB;EAAC;IAAA;IAAA,OAED,oBAAW;MACX;MACE,IAAMmE,GAAG,izEAsFiBlM,OAAO,u9DAkEbA,OAAO,y2BAuC9B;MACG;MACA,IAAMmM,YAAY,GAAG3C,QAAQ,CAACmB,aAAa,CAAC,OAAO,CAAC;MACpDwB,YAAY,CAACnB,WAAW,CAACxB,QAAQ,CAAC4C,cAAc,CAACF,GAAG,CAAC,CAAC;MACtD;MACA1C,QAAQ,CAAC6C,IAAI,CAACrB,WAAW,CAACmB,YAAY,CAAC;IACzC;EAAC;IAAA;IAAA,OAED,iBAAQ;MACN,IAAI,IAAI,CAAClE,WAAW,EAAE;QACpB,IAAI,CAACA,WAAW,CAAClH,OAAO,CAAC,UAAC+B,IAAI,EAAK;UACjCA,IAAI,CAAC+C,MAAM,EAAE;UACb/C,IAAI,CAACgD,gBAAgB,EAAE;QACzB,CAAC,CAAC;QACF,IAAI,CAACmC,WAAW,CAACqE,MAAM,GAAG,CAAC;MAC7B;MACA,IAAI,CAAC/B,SAAS,CAACC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAACD,SAAS,CAACgC,GAAG,CAAC,OAAO,CAAC,EAAE;MAC5D;MACA,IAAI,CAACzI,aAAa,CAAC/C,OAAO,CAAC,UAACgD,EAAE,EAAK;QACjCA,EAAE,EAAE;MACN,CAAC,CAAC;MACF,IAAI,CAACD,aAAa,CAACiC,KAAK,EAAE;MAC1B,IAAI,CAACwE,SAAS,CAACxE,KAAK,EAAE;IACxB;EAAC;EAAA;AAAA;AAAA,IAGGV,OAAO;EAeX,mBAAc;IAAA;IAAA,+CAdU;MACtB,GAAG,EAAE,MAAM;MACX,GAAG,EAAE,SAAS;MACd,GAAG,EAAE,SAAS;MACd,GAAG,EAAE,SAAS;MACd,GAAG,EAAE;IACP,CAAC;IAAA,mCAEkC,IAAIhF,GAAG,EAAE;IAAA;IAAA;IAAA,oCAG/B,EAAE;IAAA,gCACN,KAAK;EAId;;EAEA;EAAA;IAAA;IAAA,OACA,gBAAO+J,QAAQ,EAAE;MACf,IAAI,CAAChG,MAAM,GAAG,IAAI;MAClB,IAAMoI,OAAO,GAAG7M,OAAO,CAAC2D,MAAM,CAAC;QAC7BmJ,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE;QAC3BC,QAAQ,EAAE,IAAI,CAACC;MACjB,CAAC,CAAC;MACF,IAAIC,GAAG,GAAG,IAAI;MACd,IAAM/C,KAAK,GAAG3C,MAAM,CAACC,UAAU;MAC/B,IAAM2C,MAAM,GAAG5C,MAAM,CAACE,WAAW;MACjC,IAAMyF,MAAM,GAAG,EAAE;MACjB,IAAI1D,GAAG,GAAG,CAAC;MACX,OAAOyD,GAAG,EAAE,EAAE;QACZ,IAAME,GAAG,GAAGrL,IAAI,CAACsL,KAAK,CAACtL,IAAI,CAACqF,MAAM,EAAE,GAAG,EAAE,CAAC;QAC1CqC,GAAG,GAAG1H,IAAI,CAAC0H,GAAG,CAACA,GAAG,EAAE2D,GAAG,CAAC;QACxB,IAAMrK,KAAK,GAAG;UACZN,CAAC,EAAEV,IAAI,CAACsL,KAAK,CAACtL,IAAI,CAACqF,MAAM,EAAE,GAAG+C,KAAK,CAAC;UACpCrI,CAAC,EAAEC,IAAI,CAACsL,KAAK,CAACtL,IAAI,CAACqF,MAAM,EAAE,GAAGgD,MAAM,CAAC;UACrCiC,KAAK,EAAEe;QACT,CAAC;QACDD,MAAM,CAAC5E,IAAI,CAACxF,KAAK,CAAC;MACpB;MACA8J,OAAO,CAACS,OAAO,CAAC;QACd7D,GAAG,EAAHA,GAAG;QACH8D,IAAI,EAAEJ;MACR,CAAC,CAAC;;MAEF;MACA,IAAMK,OAAO,GAAGxN,OAAO,CAAC2D,MAAM,CAAC;QAC7BmJ,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE;QAC3BC,QAAQ,EAAE;UACR,GAAG,EAAE,OAAO;UACZ,KAAK,EAAE;QACT;MACF,CAAC,CAAC;MAEFQ,OAAO,CAACF,OAAO,CAAC;QACd7D,GAAG,EAAHA,GAAG;QACH8D,IAAI,EAAEJ;MACR,CAAC,CAAC;MACF,IAAMM,eAAe,GAAG,IAAInO,cAAc,CAAC;QACzCoH,WAAW,EAAE,IAAI;QACjBM,SAAS,EAAE,KAAK;QAChBP,IAAI,EAAE5H,UAAU;QAChBgI,YAAY,usBAWX;QACDC,cAAc,seAQV;QACJ4G,QAAQ,EAAE;UACR1N,OAAO,EAAE;YACPqM,KAAK,EAAE;cAAEA,KAAK,EAAEpH;YAAU;UAC5B,CAAC;UACD0I,OAAO,EAAE;YACPtB,KAAK,EAAE;cAAEA,KAAK,EAAEpH;YAAU;UAC5B,CAAC;UACD2I,MAAM,EAAE;YAAEvB,KAAK,EAAE;UAAE,CAAC;UAAE;UACtBwB,OAAO,EAAE;YACPxB,KAAK,EAAE,IAAIzN,KAAK,CAAC,oBAAoB;UACvC,CAAC;UACDkP,SAAS,EAAE;YACTzB,KAAK,EAAE;UACT;QACF;MACF,CAAC,CAAC;MAEF,IAAM/F,OAAO,GAAG,IAAI7G,OAAO,CAACoN,OAAO,CAACkB,SAAS,CAACC,MAAM,CAAC;MACrD1H,OAAO,CAAC2H,WAAW,GAAG,IAAI;MAC1B,IAAMC,WAAW,GAAG,IAAIzO,OAAO,CAAC+N,OAAO,CAACO,SAAS,CAACC,MAAM,CAAC;MACzDE,WAAW,CAACD,WAAW,GAAG,IAAI;MAE9BR,eAAe,CAACC,QAAQ,CAAC1N,OAAO,CAACqM,KAAK,GAAG/F,OAAO;MAChDmH,eAAe,CAACC,QAAQ,CAACC,OAAO,CAACtB,KAAK,GAAG6B,WAAW;MAEpD,qBAAmBrO,GAAG,CAAC8E,QAAQ,EAAE;QAAzBlD,MAAM,kBAANA,MAAM;MACd;MACA,IAAMkI,CAAC,GAAG,CAAC,GAAG5H,IAAI,CAACoM,GAAG,CAAC1M,MAAM,CAACyI,GAAG,GAAGnI,IAAI,CAACC,EAAE,GAAG,GAAG,CAAC,GAAGyI,QAAQ,GAAG,CAAC,GAAG,IAAI;MACxE,IAAMf,CAAC,GAAGC,CAAC,GAAGlI,MAAM,CAAC2M,MAAM;MAE3B,IAAMC,eAAe,GAAG,IAAIhP,aAAa,CAACqK,CAAC,EAAEC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC;MAC1D,IAAM2E,YAAY,GAAG,IAAIrP,IAAI,CAACoP,eAAe,EAAEZ,eAAe,CAAC;MAC/Da,YAAY,CAACzM,QAAQ,CAACc,GAAG,CAAC,CAACZ,IAAI,CAACC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAE7C,IAAI,CAACsM,YAAY,GAAGA,YAAY;MAChC,OAAOA,YAAY;IACrB;EAAC;IAAA;IAAA,OAED,0BAAiB3D,SAAS,EAAEvG,EAAE,EAAE;MAC9B,IAAI,IAAI,CAACwG,SAAS,CAACC,GAAG,CAACF,SAAS,CAAC,EAC/B,IAAI,CAACC,SAAS,CAACD,SAAS,CAAC,GAAGvG,EAAE,MAE9B,IAAI,CAACwG,SAAS,CAACjI,GAAG,CAACgI,SAAS,EAAEvG,EAAE,CAAC;IACrC;EAAC;IAAA;IAAA,OAED,mBAAU;MAAA;MACR,IAAI,CAACmK,OAAO,GAAG1E,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MAC5C,IAAI,CAACuD,OAAO,CAACnD,SAAS,GAAG,UAAU;MACnC,IAAI,CAACmD,OAAO,CAACC,SAAS,GAAG,IAAI;MAC7B3E,QAAQ,CAAC4E,IAAI,CAACpD,WAAW,CAAC,IAAI,CAACkD,OAAO,CAAC;MACvC,IAAI,CAACA,OAAO,CAAC/I,gBAAgB,CAAC,OAAO,EAAE,YAAM;QAC3C,MAAI,CAACoF,SAAS,CAACC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAI,CAACD,SAAS,CAACgC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5D;MACF,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,qBAAY;MACV;MACA,IAAMoB,MAAM,GAAGnE,QAAQ,CAACmB,aAAa,CAAC,QAAQ,CAAC;MAC/CgD,MAAM,CAAC9C,KAAK,CAACwD,MAAM,GAAG,IAAI;MAC1B;MACAV,MAAM,CAAC7D,KAAK,GAAG3C,MAAM,CAACC,UAAU;MAChCuG,MAAM,CAAC5D,MAAM,GAAG5C,MAAM,CAACE,WAAW;MAClCmC,QAAQ,CAAC4E,IAAI,CAACpD,WAAW,CAAC2C,MAAM,CAAC;MACjC,IAAI,CAACW,UAAU,CAACpG,IAAI,CAACyF,MAAM,CAAC;MAC5B,OAAOA,MAAM;IACf;EAAC;IAAA;IAAA,OAED,kBAAS;MACP,IAAI,CAACW,UAAU,CAACvN,OAAO,CAAC,UAAC4M,MAAM,EAAK;QAClCA,MAAM,CAAC9H,MAAM,EAAE;MACjB,CAAC,CAAC;MACF;MACA,IAAI,CAACyI,UAAU,CAAChC,MAAM,GAAG,CAAC;MAC1B,IAAI,CAAC4B,OAAO,IAAI,IAAI,CAACA,OAAO,CAACrI,MAAM,EAAE;MACrC,IAAI,CAACoI,YAAY,CAACnI,gBAAgB,EAAE;MACpC,IAAI,CAACmI,YAAY,CAACpI,MAAM,EAAE;MAC1B,IAAI,CAACzB,MAAM,GAAG,KAAK;IACrB;EAAC;EAAA;AAAA"}
|
|
@@ -97,10 +97,6 @@ var CylinderManage = /*#__PURE__*/function () {
|
|
|
97
97
|
var box = _this.gobal.areaBoundingBox.boundingBoxMap.get(_this.currentoperate);
|
|
98
98
|
var iscollision = collisionDetection(box, currentCameraPosition);
|
|
99
99
|
if (!iscollision) {
|
|
100
|
-
// @ts-ignore
|
|
101
|
-
_this.gobal.regionPlane.planeMesh.forEach(function (mesh) {
|
|
102
|
-
mesh.visible = true;
|
|
103
|
-
});
|
|
104
100
|
emitter.emit('peoplemanagement-camera-out', {
|
|
105
101
|
belongTo: _this.currentoperate
|
|
106
102
|
});
|
|
@@ -126,23 +122,6 @@ var CylinderManage = /*#__PURE__*/function () {
|
|
|
126
122
|
interactionManager.add(group);
|
|
127
123
|
var handleClick = function handleClick() {
|
|
128
124
|
if (_this2.gobal.style === SceneStyle.real || group.visible === false) return;
|
|
129
|
-
|
|
130
|
-
// @ts-ignore
|
|
131
|
-
_this2.gobal.regionPlane.planeMesh.forEach(function (mesh) {
|
|
132
|
-
mesh.visible = false;
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
// this.gobal.cameraUtil.set({
|
|
136
|
-
// position: [item.points[0], item.points[1] + item.height / 2 + 100, item.points[2] + 100],
|
|
137
|
-
// target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],
|
|
138
|
-
// }).then(() => {
|
|
139
|
-
// emitter.emit('peoplemanagement-camera-enter', item)
|
|
140
|
-
// const currentGroup = this.cylinderMesh.get(item.belongTo) as Group
|
|
141
|
-
// currentGroup.visible = false
|
|
142
|
-
|
|
143
|
-
// this.currentoperate = item.belongTo
|
|
144
|
-
// this.cameraAddListener()
|
|
145
|
-
// })
|
|
146
125
|
_this2.gobal.cameraUtil.focus({
|
|
147
126
|
target: item.area,
|
|
148
127
|
pitch: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BoxGeometry","Color","Group","Mesh","ShaderMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","lookAtOnYAxis","emitter","cylinderData","label","id","title","reform","belongTo","area","color","getHex","points","poi","position","height","areaLabel","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","regionPlane","planeMesh","forEach","mesh","visible","emit","cameraRemoveListener","scene","option","item","cylinder","getMesh","group","name","copy","fromArray","interactionManager","storeManagement","add","handleClick","style","real","cameraUtil","focus","target","pitch","then","setVisible","currentGroup","cylinderMesh","addEventListener","set","font","font2","fontPromiseAll","Promise","all","meshArr","geometry","center","useframe","camera","controlAddListener","bar","data","width","gradientMaterial","transparent","depthTest","uniforms","intensity","value","vertexShader","fragmentShader","rotateY","Math","PI","cameraListenerHandle","maxDistance","controls","getDistance","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Float32BufferAttribute, Group, Mesh, MeshBasicMaterial, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../utils/constant'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '8人',\n id: '1',\n title: regionMap.reform.title,\n belongTo: regionMap.reform.id,\n area: regionMap.reform.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reform.poi.position,\n height: 80,\n areaLabel: '重整装置区',\n },\n {\n label: '7人',\n id: '2',\n title: regionMap.reduction.title,\n belongTo: regionMap.reduction.id,\n area: regionMap.reduction.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reduction.poi.position,\n height: 70,\n areaLabel: '常减压装置区',\n },\n {\n label: '4人',\n id: '3',\n title: regionMap.crudeOil.title,\n belongTo: regionMap.crudeOil.id,\n area: regionMap.crudeOil.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.crudeOil.poi.position,\n height: 40,\n areaLabel: '原油罐区',\n },\n {\n label: '10人',\n id: '4',\n title: regionMap.catalyticCracking.title,\n belongTo: regionMap.catalyticCracking.id,\n area: regionMap.catalyticCracking.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.catalyticCracking.poi.position,\n height: 100,\n areaLabel: '催化裂化装置区',\n },\n {\n label: '3人',\n id: '5',\n title: regionMap.hydrocrackingUnit.title,\n belongTo: regionMap.hydrocrackingUnit.id,\n area: regionMap.hydrocrackingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.hydrocrackingUnit.poi.position,\n height: 30,\n areaLabel: '加氢裂化装置区',\n },\n {\n label: '8人',\n id: '6',\n title: regionMap.cokingUnit.title,\n belongTo: regionMap.cokingUnit.id,\n area: regionMap.cokingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.cokingUnit.poi.position,\n height: 80,\n areaLabel: '焦化装置区',\n },\n {\n label: '20人',\n id: '7',\n title: regionMap.administrative.title,\n belongTo: regionMap.administrative.id,\n area: regionMap.administrative.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.administrative.poi.position,\n height: 150,\n areaLabel: '办公区',\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string = cylinderData[0].belongTo\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n const cylinder = this.getMesh(item)\n const group = new Group()\n group.name = item.title\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(group)\n\n const handleClick = () => {\n if (this.gobal.style === SceneStyle.real || group.visible === false)\n return\n\n // @ts-ignore\n this.gobal.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n // this.gobal.cameraUtil.set({\n // position: [item.points[0], item.points[1] + item.height / 2 + 100, item.points[2] + 100],\n // target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],\n // }).then(() => {\n // emitter.emit('peoplemanagement-camera-enter', item)\n // const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n // currentGroup.visible = false\n\n // this.currentoperate = item.belongTo\n // this.cameraAddListener()\n // })\n this.gobal.cameraUtil.focus({ target: item.area, pitch: 0 }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n this.setVisible()\n\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n })\n }\n\n group.addEventListener('click', () => {\n handleClick()\n })\n\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n const font2 = createFontMesh(item.areaLabel, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 25, item.points[2]]),\n })\n\n const fontPromiseAll = Promise.all([font, font2])\n\n fontPromiseAll.then((meshArr) => {\n meshArr.forEach(\n (mesh) => {\n mesh.geometry.center()\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n },\n )\n })\n })\n this.controlAddListener()\n }\n\n setVisible(visible = true) {\n // 控制CYCLE的隐藏、显示\n this.cylinderMesh.forEach((bar) => {\n bar.visible = visible\n })\n }\n\n getMesh(data) {\n const width = 10\n\n const geometry = new BoxGeometry(width, data.height, width)\n\n const gradientMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n uniforms: {\n intensity: { value: 1.0 },\n },\n vertexShader: `\n varying vec2 vUv;\n varying vec3 vNormal;\n void main()\n {\n vUv = uv;\n vNormal =normalize( normal ) ;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n }\n \n `,\n fragmentShader: `\n \n varying vec3 vNormal;\n varying vec2 vUv;\n uniform float intensity;\n\n void main( void ) {\n \n float colX =clamp( vUv.y+0.3,0.,1.);\n\n if(vNormal.y >0.5)\n {\n colX=1.;\n }\n if(vNormal.y <-0.5)\n {\n colX=0.;\n }\n\n vec4 col = vec4 (1.,mix(0.2,0.8,colX),0.,1.);\n\n gl_FragColor=col*colX*intensity;\n }\n `,\n\n })\n\n // 创建渐变立方体\n const cylinder = new Mesh(geometry, gradientMaterial)\n cylinder.rotateY(Math.PI / 2)\n return cylinder\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n if (!iscollision) {\n // @ts-ignore\n this.gobal.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = true\n })\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private controlAddListener() {\n const maxDistance = this.gobal.option.controls.maxDistance\n maxDistance && this.gobal.control.addEventListener('change', () => {\n if (this.gobal.control.getDistance() >= maxDistance - 5)\n emitter.emit('peoplemanagement-control-maxDistance', null)\n })\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["BoxGeometry","Color","Group","Mesh","ShaderMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","lookAtOnYAxis","emitter","cylinderData","label","id","title","reform","belongTo","area","color","getHex","points","poi","position","height","areaLabel","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","emit","cameraRemoveListener","scene","option","forEach","item","cylinder","getMesh","group","name","visible","copy","fromArray","interactionManager","storeManagement","add","handleClick","style","real","cameraUtil","focus","target","pitch","then","setVisible","currentGroup","cylinderMesh","addEventListener","set","font","font2","fontPromiseAll","Promise","all","meshArr","mesh","geometry","center","useframe","camera","controlAddListener","bar","data","width","gradientMaterial","transparent","depthTest","uniforms","intensity","value","vertexShader","fragmentShader","rotateY","Math","PI","cameraListenerHandle","maxDistance","controls","getDistance","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Float32BufferAttribute, Group, Mesh, MeshBasicMaterial, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../utils/constant'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '8人',\n id: '1',\n title: regionMap.reform.title,\n belongTo: regionMap.reform.id,\n area: regionMap.reform.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reform.poi.position,\n height: 80,\n areaLabel: '重整装置区',\n },\n {\n label: '7人',\n id: '2',\n title: regionMap.reduction.title,\n belongTo: regionMap.reduction.id,\n area: regionMap.reduction.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reduction.poi.position,\n height: 70,\n areaLabel: '常减压装置区',\n },\n {\n label: '4人',\n id: '3',\n title: regionMap.crudeOil.title,\n belongTo: regionMap.crudeOil.id,\n area: regionMap.crudeOil.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.crudeOil.poi.position,\n height: 40,\n areaLabel: '原油罐区',\n },\n {\n label: '10人',\n id: '4',\n title: regionMap.catalyticCracking.title,\n belongTo: regionMap.catalyticCracking.id,\n area: regionMap.catalyticCracking.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.catalyticCracking.poi.position,\n height: 100,\n areaLabel: '催化裂化装置区',\n },\n {\n label: '3人',\n id: '5',\n title: regionMap.hydrocrackingUnit.title,\n belongTo: regionMap.hydrocrackingUnit.id,\n area: regionMap.hydrocrackingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.hydrocrackingUnit.poi.position,\n height: 30,\n areaLabel: '加氢裂化装置区',\n },\n {\n label: '8人',\n id: '6',\n title: regionMap.cokingUnit.title,\n belongTo: regionMap.cokingUnit.id,\n area: regionMap.cokingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.cokingUnit.poi.position,\n height: 80,\n areaLabel: '焦化装置区',\n },\n {\n label: '20人',\n id: '7',\n title: regionMap.administrative.title,\n belongTo: regionMap.administrative.id,\n area: regionMap.administrative.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.administrative.poi.position,\n height: 150,\n areaLabel: '办公区',\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string = cylinderData[0].belongTo\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n const cylinder = this.getMesh(item)\n const group = new Group()\n group.name = item.title\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(group)\n\n const handleClick = () => {\n if (this.gobal.style === SceneStyle.real || group.visible === false)\n return\n\n this.gobal.cameraUtil.focus({ target: item.area, pitch: 0 }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n this.setVisible()\n\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n })\n }\n\n group.addEventListener('click', () => {\n handleClick()\n })\n\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n const font2 = createFontMesh(item.areaLabel, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 25, item.points[2]]),\n })\n\n const fontPromiseAll = Promise.all([font, font2])\n\n fontPromiseAll.then((meshArr) => {\n meshArr.forEach(\n (mesh) => {\n mesh.geometry.center()\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n },\n )\n })\n })\n this.controlAddListener()\n }\n\n setVisible(visible = true) {\n // 控制CYCLE的隐藏、显示\n this.cylinderMesh.forEach((bar) => {\n bar.visible = visible\n })\n }\n\n getMesh(data) {\n const width = 10\n\n const geometry = new BoxGeometry(width, data.height, width)\n\n const gradientMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n uniforms: {\n intensity: { value: 1.0 },\n },\n vertexShader: `\n varying vec2 vUv;\n varying vec3 vNormal;\n void main()\n {\n vUv = uv;\n vNormal =normalize( normal ) ;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n }\n \n `,\n fragmentShader: `\n \n varying vec3 vNormal;\n varying vec2 vUv;\n uniform float intensity;\n\n void main( void ) {\n \n float colX =clamp( vUv.y+0.3,0.,1.);\n\n if(vNormal.y >0.5)\n {\n colX=1.;\n }\n if(vNormal.y <-0.5)\n {\n colX=0.;\n }\n\n vec4 col = vec4 (1.,mix(0.2,0.8,colX),0.,1.);\n\n gl_FragColor=col*colX*intensity;\n }\n `,\n\n })\n\n // 创建渐变立方体\n const cylinder = new Mesh(geometry, gradientMaterial)\n cylinder.rotateY(Math.PI / 2)\n return cylinder\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n if (!iscollision) {\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private controlAddListener() {\n const maxDistance = this.gobal.option.controls.maxDistance\n maxDistance && this.gobal.control.addEventListener('change', () => {\n if (this.gobal.control.getDistance() >= maxDistance - 5)\n emitter.emit('peoplemanagement-control-maxDistance', null)\n })\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":"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"}
|
|
@@ -86,6 +86,7 @@ var toggleSmartInspection = function toggleSmartInspection() {
|
|
|
86
86
|
closePeopleManagemen.apply(this);
|
|
87
87
|
closeCameraPoiInspection.apply(this);
|
|
88
88
|
this.regionPlane.planeMesh.forEach(function (mesh) {
|
|
89
|
+
console.log(mesh);
|
|
89
90
|
mesh.visible = false;
|
|
90
91
|
});
|
|
91
92
|
};
|
|
@@ -139,18 +140,21 @@ export var toggleTag = (_toggleTag = {}, _defineProperty(_toggleTag, SceneTag.ov
|
|
|
139
140
|
}), _toggleTag);
|
|
140
141
|
var handleUnit = function handleUnit() {
|
|
141
142
|
var _this = this;
|
|
143
|
+
// 围栏
|
|
142
144
|
var wall = new WallManage(this, {
|
|
143
145
|
visible: false
|
|
144
146
|
});
|
|
145
147
|
wall.generateWall();
|
|
146
148
|
this.wall = wall;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
+
|
|
150
|
+
// 圆柱
|
|
149
151
|
var cylinder = new CylinderManage(this, {
|
|
150
152
|
visible: false
|
|
151
153
|
});
|
|
152
154
|
cylinder.generateCylinder();
|
|
153
155
|
this.cylinder = cylinder;
|
|
156
|
+
var regionPlane = new RegionPlane(this);
|
|
157
|
+
this.regionPlane = regionPlane;
|
|
154
158
|
|
|
155
159
|
// POI
|
|
156
160
|
var poi = new PoiManage(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["utils","SceneStyle","SceneTag","MessageType","sendToMessage","EMessageStatus","WallManage","CylinderManage","PoiManage","CircleManage","AreaBoundingBoxManage","Inspection","CameraPoi","DistrictLineManage","RegionPlane","emitter","showOverview","poi","generatePoi","closeOverview","wall","wallMesh","forEach","mesh","visible","remove","showPeopleManagemen","cylinder","cylinderMesh","closePeopleManagemen","circle","showSmartInspection","inspection","show","closeSmartInspection","hide","closeCameraPoiInspection","cameraPoi","showCameraPoiInspection","generateObject","toggleOverview","districtLine","isShow","generateLine","scene","camera","layers","disable","apply","regionPlane","planeMesh","togglePeopleManagemen","enable","toggleSmartInspection","toggleSecurityOperation","toggleStandBy","toggleTag","overview","tag","toggleSceneStyle","real","controls","enabled","tech","standBy","handleUnit","generateWall","generateCylinder","on","data","Event","Success","undefined","type","generateCircle","belongTo","areaBoundingBox","generateBoundingBox","addEventListener","args","item"],"sources":["../../../src/factory/unit/index.ts"],"sourcesContent":["import { Layers, utils } from '@anov/3d-core'\nimport { SceneStyle, SceneTag } from '../utils/constant'\n\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\nimport WallManage from './wall'\nimport CylinderManage from './cylinder'\nimport PoiManage from './poi'\nimport CircleManage from './circle'\nimport AreaBoundingBoxManage from './areaBoundingBox'\nimport Inspection from './inspection'\nimport CameraPoi from './CameraPoi'\nimport DistrictLineManage from './districtLine'\nimport RegionPlane from './region'\n\nconst { emitter } = utils\n\n// 临时优化\n\nconst showOverview = function () {\n this.poi.generatePoi()\n}\n\nconst closeOverview = function () {\n this.wall.wallMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.poi.remove()\n}\n\nconst showPeopleManagemen = function () {\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = true\n })\n}\n\nconst closePeopleManagemen = function () {\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.circle.remove()\n}\n\nconst showSmartInspection = function () {\n this.inspection.show()\n}\n\nconst closeSmartInspection = function () {\n this.inspection.hide()\n}\n\nconst closeCameraPoiInspection = function () {\n this.cameraPoi?.remove()\n}\nconst showCameraPoiInspection = function () {\n this.cameraPoi?.generateObject()\n}\n\nconst toggleOverview = function () {\n if (!this.districtLine.isShow)\n this.districtLine.generateLine()\n\n this.scene.camera.layers.disable(28)\n showOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeSmartInspection.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = true\n })\n}\n\nconst togglePeopleManagemen = function () {\n if (!this.districtLine.isShow)\n this.districtLine.generateLine()\n\n this.scene.camera.layers.enable(28)\n showPeopleManagemen.apply(this)\n closeOverview.apply(this)\n closeSmartInspection.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n}\n\nconst toggleSmartInspection = function () {\n this.districtLine.remove()\n this.scene.camera.layers.disable(28)\n showSmartInspection.apply(this)\n closeOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n}\n\nconst toggleSecurityOperation = function () {\n this.districtLine.remove()\n this.scene.camera.layers.disable(28)\n showCameraPoiInspection.apply(this)\n closeOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeSmartInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n}\n\nconst toggleStandBy = function () {\n this.districtLine.remove()\n this.scene.camera.layers.disable(28)\n closeOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeSmartInspection.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n}\n\nexport const toggleTag = {\n [SceneTag.overview]() {\n this.tag = SceneTag.overview\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = true\n toggleOverview.apply(this)\n },\n [SceneTag['people-management']]() {\n this.tag = SceneTag['people-management']\n this.toggleSceneStyle(SceneStyle.tech)\n this.scene.controls.enabled = true\n togglePeopleManagemen.apply(this)\n },\n [SceneTag['smart-inspection']]() {\n this.tag = SceneTag['smart-inspection']\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = false\n toggleSmartInspection.apply(this)\n },\n [SceneTag['security-operation']]() {\n this.tag = SceneTag['security-operation']\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = true\n toggleSecurityOperation.apply(this)\n },\n [SceneTag.standBy]() {\n this.tag = SceneTag.standBy\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = true\n toggleStandBy.apply(this)\n },\n}\n\nconst handleUnit = function () {\n const wall = new WallManage(this, { visible: false })\n wall.generateWall()\n this.wall = wall\n\n const regionPlane = new RegionPlane(this)\n this.regionPlane = regionPlane\n\n const cylinder = new CylinderManage(this, {\n visible: false,\n })\n cylinder.generateCylinder()\n\n this.cylinder = cylinder\n\n // POI\n const poi = new PoiManage(this)\n poi.generatePoi()\n this.poi = poi\n\n // people\n const circle = new CircleManage(this)\n this.circle = circle\n\n const districtLine = new DistrictLineManage(this)\n this.districtLine = districtLine\n\n this.districtLine.generateLine()\n\n emitter.on('peoplemanagement-camera-enter', (data: any) => {\n sendToMessage(MessageType.Event, 'onClick', EMessageStatus.Success, undefined, {\n type: 'Bar',\n ...data,\n })\n this.circle.generateCircle(data?.belongTo)\n })\n\n emitter.on('peoplemanagement-person-click', (data: any) => {\n sendToMessage(MessageType.Event, 'onClick', EMessageStatus.Success, undefined, {\n type: 'POI',\n ...data,\n })\n })\n\n // boundingBox\n const areaBoundingBox = new AreaBoundingBoxManage()\n areaBoundingBox.generateBoundingBox()\n this.areaBoundingBox = areaBoundingBox\n\n const inspection = new Inspection(this)\n this.inspection = inspection\n\n const cameraPoi = new CameraPoi(this)\n this.cameraPoi = cameraPoi\n\n // some global events handle\n this.addEventListener('peoplemanagement-camera-out', (args) => {\n if (this.tag !== SceneTag['people-management'])\n return\n cylinder.cylinderMesh.forEach((item) => {\n item.visible = true\n })\n this.circle.remove()\n })\n\n emitter.on('peoplemanagement-control-maxDistance', () => {\n sendToMessage(MessageType.Event, 'onCancel', EMessageStatus.Success, undefined, { })\n })\n}\n\nexport default handleUnit\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["utils","SceneStyle","SceneTag","MessageType","sendToMessage","EMessageStatus","WallManage","CylinderManage","PoiManage","CircleManage","AreaBoundingBoxManage","Inspection","CameraPoi","DistrictLineManage","RegionPlane","emitter","showOverview","poi","generatePoi","closeOverview","wall","wallMesh","forEach","mesh","visible","remove","showPeopleManagemen","cylinder","cylinderMesh","closePeopleManagemen","circle","showSmartInspection","inspection","show","closeSmartInspection","hide","closeCameraPoiInspection","cameraPoi","showCameraPoiInspection","generateObject","toggleOverview","districtLine","isShow","generateLine","scene","camera","layers","disable","apply","regionPlane","planeMesh","togglePeopleManagemen","enable","toggleSmartInspection","console","log","toggleSecurityOperation","toggleStandBy","toggleTag","overview","tag","toggleSceneStyle","real","controls","enabled","tech","standBy","handleUnit","generateWall","generateCylinder","on","data","Event","Success","undefined","type","generateCircle","belongTo","areaBoundingBox","generateBoundingBox","addEventListener","args","item"],"sources":["../../../src/factory/unit/index.ts"],"sourcesContent":["import { Layers, utils } from '@anov/3d-core'\nimport { SceneStyle, SceneTag } from '../utils/constant'\n\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\nimport WallManage from './wall'\nimport CylinderManage from './cylinder'\nimport PoiManage from './poi'\nimport CircleManage from './circle'\nimport AreaBoundingBoxManage from './areaBoundingBox'\nimport Inspection from './inspection'\nimport CameraPoi from './CameraPoi'\nimport DistrictLineManage from './districtLine'\nimport RegionPlane from './region'\n\nconst { emitter } = utils\n\n// 临时优化\n\nconst showOverview = function () {\n this.poi.generatePoi()\n}\n\nconst closeOverview = function () {\n this.wall.wallMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.poi.remove()\n}\n\nconst showPeopleManagemen = function () {\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = true\n })\n}\n\nconst closePeopleManagemen = function () {\n this.cylinder.cylinderMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.circle.remove()\n}\n\nconst showSmartInspection = function () {\n this.inspection.show()\n}\n\nconst closeSmartInspection = function () {\n this.inspection.hide()\n}\n\nconst closeCameraPoiInspection = function () {\n this.cameraPoi?.remove()\n}\nconst showCameraPoiInspection = function () {\n this.cameraPoi?.generateObject()\n}\n\nconst toggleOverview = function () {\n if (!this.districtLine.isShow)\n this.districtLine.generateLine()\n\n this.scene.camera.layers.disable(28)\n showOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeSmartInspection.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = true\n })\n}\n\nconst togglePeopleManagemen = function () {\n if (!this.districtLine.isShow)\n this.districtLine.generateLine()\n\n this.scene.camera.layers.enable(28)\n showPeopleManagemen.apply(this)\n closeOverview.apply(this)\n closeSmartInspection.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n}\n\nconst toggleSmartInspection = function () {\n this.districtLine.remove()\n this.scene.camera.layers.disable(28)\n showSmartInspection.apply(this)\n closeOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n console.log(mesh)\n mesh.visible = false\n })\n}\n\nconst toggleSecurityOperation = function () {\n this.districtLine.remove()\n this.scene.camera.layers.disable(28)\n showCameraPoiInspection.apply(this)\n closeOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeSmartInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n}\n\nconst toggleStandBy = function () {\n this.districtLine.remove()\n this.scene.camera.layers.disable(28)\n closeOverview.apply(this)\n closePeopleManagemen.apply(this)\n closeSmartInspection.apply(this)\n closeCameraPoiInspection.apply(this)\n\n this.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n}\n\nexport const toggleTag = {\n [SceneTag.overview]() {\n this.tag = SceneTag.overview\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = true\n toggleOverview.apply(this)\n },\n [SceneTag['people-management']]() {\n this.tag = SceneTag['people-management']\n this.toggleSceneStyle(SceneStyle.tech)\n this.scene.controls.enabled = true\n togglePeopleManagemen.apply(this)\n },\n [SceneTag['smart-inspection']]() {\n this.tag = SceneTag['smart-inspection']\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = false\n toggleSmartInspection.apply(this)\n },\n [SceneTag['security-operation']]() {\n this.tag = SceneTag['security-operation']\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = true\n toggleSecurityOperation.apply(this)\n },\n [SceneTag.standBy]() {\n this.tag = SceneTag.standBy\n this.toggleSceneStyle(SceneStyle.real)\n this.scene.controls.enabled = true\n toggleStandBy.apply(this)\n },\n}\n\nconst handleUnit = function () {\n // 围栏\n const wall = new WallManage(this, { visible: false })\n wall.generateWall()\n this.wall = wall\n\n // 圆柱\n const cylinder = new CylinderManage(this, {\n visible: false,\n })\n cylinder.generateCylinder()\n\n this.cylinder = cylinder\n\n const regionPlane = new RegionPlane(this)\n this.regionPlane = regionPlane\n\n // POI\n const poi = new PoiManage(this)\n poi.generatePoi()\n this.poi = poi\n\n // people\n const circle = new CircleManage(this)\n this.circle = circle\n\n const districtLine = new DistrictLineManage(this)\n this.districtLine = districtLine\n\n this.districtLine.generateLine()\n\n emitter.on('peoplemanagement-camera-enter', (data: any) => {\n sendToMessage(MessageType.Event, 'onClick', EMessageStatus.Success, undefined, {\n type: 'Bar',\n ...data,\n })\n this.circle.generateCircle(data?.belongTo)\n })\n\n emitter.on('peoplemanagement-person-click', (data: any) => {\n sendToMessage(MessageType.Event, 'onClick', EMessageStatus.Success, undefined, {\n type: 'POI',\n ...data,\n })\n })\n\n // boundingBox\n const areaBoundingBox = new AreaBoundingBoxManage()\n areaBoundingBox.generateBoundingBox()\n this.areaBoundingBox = areaBoundingBox\n\n const inspection = new Inspection(this)\n this.inspection = inspection\n\n const cameraPoi = new CameraPoi(this)\n this.cameraPoi = cameraPoi\n\n // some global events handle\n this.addEventListener('peoplemanagement-camera-out', (args) => {\n if (this.tag !== SceneTag['people-management'])\n return\n cylinder.cylinderMesh.forEach((item) => {\n item.visible = true\n })\n this.circle.remove()\n })\n\n emitter.on('peoplemanagement-control-maxDistance', () => {\n sendToMessage(MessageType.Event, 'onCancel', EMessageStatus.Success, undefined, { })\n })\n}\n\nexport default handleUnit\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Object3D } from '@anov/3d-core';
|
|
2
|
+
import { SpritePoi } from '@anov/3d-ability';
|
|
2
3
|
declare class PoiManage {
|
|
3
4
|
private gobal;
|
|
4
5
|
private scene;
|
|
@@ -11,6 +12,7 @@ declare class PoiManage {
|
|
|
11
12
|
private poiHeight;
|
|
12
13
|
constructor(gobal: any);
|
|
13
14
|
generatePoi(): Promise<void>;
|
|
15
|
+
updateScale(poi: SpritePoi, ratio?: number): void;
|
|
14
16
|
getDom(data: any): HTMLDivElement;
|
|
15
17
|
remove(): void;
|
|
16
18
|
reset(): void;
|
package/dist/factory/unit/poi.js
CHANGED
|
@@ -35,7 +35,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
35
35
|
value: function () {
|
|
36
36
|
var _generatePoi = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
37
37
|
var _this = this;
|
|
38
|
-
var wordLength,
|
|
38
|
+
var wordLength, ratio, fn, orbitControls;
|
|
39
39
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
40
40
|
while (1) switch (_context2.prev = _context2.next) {
|
|
41
41
|
case 0:
|
|
@@ -47,9 +47,8 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
47
47
|
case 0:
|
|
48
48
|
region = regionMap[key];
|
|
49
49
|
wordLength = region.title.length;
|
|
50
|
-
|
|
50
|
+
ratio = Math.max(wordLength * (wordLength > 6 ? 34 : 40), 180) / _this.poiHeight;
|
|
51
51
|
option = {
|
|
52
|
-
scale: [xScale, 80, 1],
|
|
53
52
|
animation: [{
|
|
54
53
|
type: EAnimationType.grow,
|
|
55
54
|
duration: 1
|
|
@@ -61,6 +60,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
61
60
|
sprite = new SpritePoi(_this.getDom(region), option);
|
|
62
61
|
sprite.position.copy(new Vector3().fromArray(region.poi.position));
|
|
63
62
|
_this.scene.add(sprite);
|
|
63
|
+
_this.updateScale(sprite, ratio);
|
|
64
64
|
_this.poiMesh.set(region.poi.id, sprite);
|
|
65
65
|
|
|
66
66
|
// @ts-ignore
|
|
@@ -120,7 +120,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
120
120
|
_this.addDialogPanel(region, event.point);
|
|
121
121
|
});
|
|
122
122
|
_this.poiEventListener.add(unClick);
|
|
123
|
-
case
|
|
123
|
+
case 18:
|
|
124
124
|
case "end":
|
|
125
125
|
return _context.stop();
|
|
126
126
|
}
|
|
@@ -130,17 +130,49 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
130
130
|
return _ref.apply(this, arguments);
|
|
131
131
|
};
|
|
132
132
|
}());
|
|
133
|
-
|
|
133
|
+
fn = function fn() {
|
|
134
|
+
_this.poiMesh.forEach(function (poi) {
|
|
135
|
+
_this.updateScale(poi);
|
|
136
|
+
});
|
|
137
|
+
}; // 控制POI始终是一个大小
|
|
138
|
+
orbitControls = use.useScene().orbitControls;
|
|
139
|
+
orbitControls === null || orbitControls === void 0 ? void 0 : orbitControls.addEventListener('change', fn);
|
|
140
|
+
this.poiEventListener.add(function () {
|
|
141
|
+
return orbitControls === null || orbitControls === void 0 ? void 0 : orbitControls.removeEventListener('change', fn);
|
|
142
|
+
});
|
|
143
|
+
case 5:
|
|
134
144
|
case "end":
|
|
135
145
|
return _context2.stop();
|
|
136
146
|
}
|
|
137
|
-
}, _callee2);
|
|
147
|
+
}, _callee2, this);
|
|
138
148
|
}));
|
|
139
149
|
function generatePoi() {
|
|
140
150
|
return _generatePoi.apply(this, arguments);
|
|
141
151
|
}
|
|
142
152
|
return generatePoi;
|
|
143
|
-
}()
|
|
153
|
+
}() /// <summary>
|
|
154
|
+
/// 按照距离缩放,距离越远,缩放越大
|
|
155
|
+
/// </summary>
|
|
156
|
+
}, {
|
|
157
|
+
key: "updateScale",
|
|
158
|
+
value: function updateScale(poi) {
|
|
159
|
+
var _camera$position;
|
|
160
|
+
var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
161
|
+
// 距离限制范围的值,用于计算缩放比例
|
|
162
|
+
var minDistance = 0.1;
|
|
163
|
+
var maxDistance = 1000000;
|
|
164
|
+
var _use$useScene = use.useScene(),
|
|
165
|
+
camera = _use$useScene.camera;
|
|
166
|
+
|
|
167
|
+
// 计算相机和物体之间的距离
|
|
168
|
+
var distance = ((_camera$position = camera.position) === null || _camera$position === void 0 ? void 0 : _camera$position.distanceTo(poi.position)) || 0.1;
|
|
169
|
+
var clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance));
|
|
170
|
+
var scaleValue = clampedDistance * 0.1;
|
|
171
|
+
if (!ratio && poi.scale) ratio = poi.scale.x / poi.scale.y;
|
|
172
|
+
|
|
173
|
+
// 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值
|
|
174
|
+
poi.scale.copy(new Vector3(scaleValue * ratio, scaleValue, 1));
|
|
175
|
+
}
|
|
144
176
|
}, {
|
|
145
177
|
key: "getDom",
|
|
146
178
|
value: function getDom(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","walllMaterial","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","wordLength","title","length","xScale","Math","max","poiHeight","option","scale","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","poiMesh","set","id","target","regionPlane","planeMesh","changeWallState","show","dialogPoi","visible","wallMesh","uniforms","value","wallGrowFrame","useframe","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","minWidth","width","padding","img","src","left","top","appendChild","label","innerText","fontWeight","remove","removeFromParent","f","clear","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { usePath } from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\nimport { walllMaterial } from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n private poiWidth: number\n private poiHeight = 262\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n async generatePoi() {\n let wordLength, xScale\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n wordLength = region.title.length\n xScale = Math.max(wordLength * (wordLength > 6 ? 34 : 40), 180) / this.poiHeight * 80\n const option = {\n scale: [xScale, 80, 1],\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n }],\n }\n const sprite = new SpritePoi(this.getDom(region), option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // @ts-ignore\n const target = this.gobal.regionPlane.planeMesh.get(region.id)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n walllMaterial.uniforms.grow.value = 0\n\n if (show) {\n let wallGrowFrame\n\n if (wallGrowFrame)\n wallGrowFrame()\n\n wallGrowFrame = use.useframe(() => {\n walllMaterial.uniforms.grow.value += 3\n\n if (walllMaterial.uniforms.grow.value > 50)\n wallGrowFrame()\n })\n }\n }\n\n target.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n target.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n\n // let wallGrowFrame\n\n // if (wallGrowFrame)\n // wallGrowFrame()\n\n // walllMaterial.uniforms.grow.value = 0\n\n // wallGrowFrame = use.useframe(() => {\n // walllMaterial.uniforms.grow.value += 3\n // })\n\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n const wordLength = data.title.length\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: `url(${usePath}poi.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: `${this.poiHeight}px`,\n minWidth: '180px',\n width: `${wordLength * (wordLength > 6 ? 34 : 40)}px`,\n padding: '12px 0 0 25px',\n position: 'relative',\n })\n const img = document.createElement('img')\n img.src = `${usePath}icon.png`\n img.style.position = 'absolute'\n img.style.left = '25px'\n img.style.top = '5px'\n dom.appendChild(img)\n const label = document.createElement('label')\n label.innerText = data.title\n label.style.fontWeight = 'bold'\n dom.appendChild(label)\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","walllMaterial","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","wordLength","title","length","ratio","Math","max","poiHeight","option","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","updateScale","poiMesh","set","id","target","regionPlane","planeMesh","changeWallState","show","dialogPoi","visible","wallMesh","uniforms","value","wallGrowFrame","useframe","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","fn","orbitControls","useScene","removeEventListener","minDistance","maxDistance","camera","distance","distanceTo","clampedDistance","min","scaleValue","scale","x","y","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","minWidth","width","padding","img","src","left","top","appendChild","label","innerText","fontWeight","remove","removeFromParent","f","clear","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Mesh, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { usePath } from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\nimport { walllMaterial } from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n private poiWidth: number\n private poiHeight = 262\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n async generatePoi() {\n let wordLength, ratio\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n wordLength = region.title.length\n ratio = Math.max(wordLength * (wordLength > 6 ? 34 : 40), 180) / this.poiHeight\n const option = {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n }],\n }\n const sprite = new SpritePoi(this.getDom(region), option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n this.scene.add(sprite)\n this.updateScale(sprite, ratio)\n this.poiMesh.set(region.poi.id, sprite)\n\n // @ts-ignore\n const target = this.gobal.regionPlane.planeMesh.get(region.id)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n walllMaterial.uniforms.grow.value = 0\n\n if (show) {\n let wallGrowFrame\n\n if (wallGrowFrame)\n wallGrowFrame()\n\n wallGrowFrame = use.useframe(() => {\n walllMaterial.uniforms.grow.value += 3\n\n if (walllMaterial.uniforms.grow.value > 50)\n wallGrowFrame()\n })\n }\n }\n\n target.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n target.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n\n // let wallGrowFrame\n\n // if (wallGrowFrame)\n // wallGrowFrame()\n\n // walllMaterial.uniforms.grow.value = 0\n\n // wallGrowFrame = use.useframe(() => {\n // walllMaterial.uniforms.grow.value += 3\n // })\n\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n\n const fn = () => {\n this.poiMesh.forEach((poi: SpritePoi) => {\n this.updateScale(poi)\n })\n }\n // 控制POI始终是一个大小\n const orbitControls = use.useScene().orbitControls\n orbitControls?.addEventListener('change', fn)\n this.poiEventListener.add(() => orbitControls?.removeEventListener('change', fn))\n }\n\n /// <summary>\n /// 按照距离缩放,距离越远,缩放越大\n /// </summary>\n updateScale(poi: SpritePoi, ratio = 0) {\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n const { camera } = use.useScene()\n\n // 计算相机和物体之间的距离\n const distance = camera.position?.distanceTo(poi.position) || 0.1\n\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n\n const scaleValue = clampedDistance * 0.1\n if (!ratio && poi.scale)\n ratio = poi.scale.x / poi.scale.y\n\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n poi.scale.copy(new Vector3(scaleValue * ratio, scaleValue, 1))\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n const wordLength = data.title.length\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: `url(${usePath}poi.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: `${this.poiHeight}px`,\n minWidth: '180px',\n width: `${wordLength * (wordLength > 6 ? 34 : 40)}px`,\n padding: '12px 0 0 25px',\n position: 'relative',\n })\n const img = document.createElement('img')\n img.src = `${usePath}icon.png`\n img.style.position = 'absolute'\n img.style.left = '25px'\n img.style.top = '5px'\n dom.appendChild(img)\n const label = document.createElement('label')\n label.innerText = data.title\n label.style.fontWeight = 'bold'\n dom.appendChild(label)\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anov/3d",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.74",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"localforage": "^1.10.0",
|
|
23
23
|
"resize-observer-polyfill": "^1.5.1",
|
|
24
24
|
"uuid": "^9.0.1",
|
|
25
|
-
"@anov/3d-
|
|
26
|
-
"@anov/3d-
|
|
25
|
+
"@anov/3d-ability": "^0.0.13",
|
|
26
|
+
"@anov/3d-core": "^0.0.13"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/uuid": "^9.0.7"
|