@anov/3d 0.0.64 → 0.0.65

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.
@@ -9,6 +9,7 @@ declare class CameraPoi {
9
9
  headMap: HeadMap;
10
10
  dialogManage: Dialog;
11
11
  eventListener: Set<Function>;
12
+ currentDialogMesh: Group;
12
13
  startPosition: Vector3;
13
14
  cameraLookAt: Vector3;
14
15
  constructor(gobal: Factory3D);
@@ -29,6 +29,7 @@ var CameraPoi = /*#__PURE__*/function () {
29
29
  _defineProperty(this, "headMap", void 0);
30
30
  _defineProperty(this, "dialogManage", void 0);
31
31
  _defineProperty(this, "eventListener", new Set());
32
+ _defineProperty(this, "currentDialogMesh", void 0);
32
33
  _defineProperty(this, "startPosition", void 0);
33
34
  _defineProperty(this, "cameraLookAt", void 0);
34
35
  this.gobal = gobal;
@@ -157,10 +158,17 @@ var CameraPoi = /*#__PURE__*/function () {
157
158
  var _use$useScene = use.useScene(),
158
159
  camera = _use$useScene.camera;
159
160
  var unClick = sprite.addEventListener('click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
160
- var position, targetPosition, camaraPosition, startPosition, cameraLookAt, dialogMesh;
161
+ var position, targetPosition, camaraPosition, startPosition, cameraLookAt;
161
162
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
162
163
  while (1) switch (_context3.prev = _context3.next) {
163
164
  case 0:
165
+ if (!(_this2.currentDialogMesh && _this2.currentDialogMesh.name === region.camera.name)) {
166
+ _context3.next = 3;
167
+ break;
168
+ }
169
+ _this2.dialogManage.close();
170
+ return _context3.abrupt("return");
171
+ case 3:
164
172
  sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, {
165
173
  id: region.camera.id
166
174
  });
@@ -174,22 +182,24 @@ var CameraPoi = /*#__PURE__*/function () {
174
182
  position: camaraPosition,
175
183
  target: targetPosition
176
184
  });
177
- _context3.next = 10;
185
+ _context3.next = 13;
178
186
  return _this2.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -20, 5)));
179
- case 10:
180
- dialogMesh = _context3.sent;
187
+ case 13:
188
+ _this2.currentDialogMesh = _context3.sent;
181
189
  _this2.dialogManage.addEventListener('close', function () {
182
190
  // 初始相机到原始位置
183
191
  _this2.gobal.cameraUtil.set({
184
192
  position: startPosition.toArray(),
185
193
  target: cameraLookAt.toArray()
186
194
  });
195
+ _this2.currentDialogMesh = null;
187
196
  sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, {
188
197
  id: region.camera.id
189
198
  });
190
199
  });
191
- _this2.gobal.scene.add(dialogMesh);
192
- case 13:
200
+ _this2.currentDialogMesh.name = region.camera.name;
201
+ _this2.gobal.scene.add(_this2.currentDialogMesh);
202
+ case 17:
193
203
  case "end":
194
204
  return _context3.stop();
195
205
  }
@@ -234,6 +244,9 @@ var CameraPoi = /*#__PURE__*/function () {
234
244
  mesh.position.copy(sprite.position);
235
245
  mesh.position.y = 0.5;
236
246
  _this3.gobal.scene.add(mesh);
247
+ var _use$useScene3 = use.useScene(),
248
+ orbitControls = _use$useScene3.orbitControls;
249
+ orbitControls.enabled = false;
237
250
 
238
251
  // this.headMap.addBack()
239
252
  _this3.headMap.addEventListener('close', function () {
@@ -262,6 +275,9 @@ var CameraPoi = /*#__PURE__*/function () {
262
275
  position: this.startPosition.toArray(),
263
276
  target: this.cameraLookAt.toArray()
264
277
  });
278
+ var _use$useScene4 = use.useScene(),
279
+ orbitControls = _use$useScene4.orbitControls;
280
+ orbitControls.enabled = true;
265
281
  }
266
282
  }, {
267
283
  key: "togglePoi",
@@ -292,7 +308,12 @@ var CameraPoi = /*#__PURE__*/function () {
292
308
  fn();
293
309
  });
294
310
  // 热力图
295
- if (this.headMap) this.headMap.remove();
311
+ if (this.headMap) {
312
+ this.headMap.remove();
313
+ var _use$useScene5 = use.useScene(),
314
+ orbitControls = _use$useScene5.orbitControls;
315
+ orbitControls.enabled = true;
316
+ }
296
317
  this.eventListener.clear();
297
318
  this.dialogManage.close();
298
319
  }
@@ -443,8 +464,8 @@ var Dialog = /*#__PURE__*/function () {
443
464
  }, {
444
465
  key: "getBoxSize",
445
466
  value: function getBoxSize(sprite) {
446
- var _use$useScene3 = use.useScene(),
447
- camera = _use$useScene3.camera;
467
+ var _use$useScene6 = use.useScene(),
468
+ camera = _use$useScene6.camera;
448
469
 
449
470
  // 获取设备像素比
450
471
  var devicePixelRatio = window.devicePixelRatio || 1;
@@ -479,8 +500,8 @@ var Dialog = /*#__PURE__*/function () {
479
500
  }, {
480
501
  key: "updateScale",
481
502
  value: function updateScale(sprite) {
482
- var _use$useScene4 = use.useScene(),
483
- camera = _use$useScene4.camera;
503
+ var _use$useScene7 = use.useScene(),
504
+ camera = _use$useScene7.camera;
484
505
  var ratio = 60 / camera.fov;
485
506
  // 距离限制范围的值,用于计算缩放比例
486
507
  var minDistance = 0.1;
@@ -536,7 +557,6 @@ var Dialog = /*#__PURE__*/function () {
536
557
  var closeSpan = document.createElement('span');
537
558
  closeSpan.className = 'dialog-close';
538
559
  closeSpan.addEventListener('click', function () {
539
- _this5.eventList.has('close') && _this5.eventList.get('close')();
540
560
  _this5.close();
541
561
  });
542
562
  var hLine = document.createElement('span');
@@ -636,6 +656,7 @@ var Dialog = /*#__PURE__*/function () {
636
656
  });
637
657
  this.cuteSprites.length = 0;
638
658
  }
659
+ this.eventList.has('close') && this.eventList.get('close')();
639
660
  // 移除事件监听
640
661
  this.eventListener.forEach(function (fn) {
641
662
  fn();
@@ -737,8 +758,8 @@ var HeadMap = /*#__PURE__*/function () {
737
758
  greyTexture.needsUpdate = true;
738
759
  heatMapMaterial.uniforms.heatMap.value = texture;
739
760
  heatMapMaterial.uniforms.greyMap.value = greyTexture;
740
- var _use$useScene5 = use.useScene(),
741
- camera = _use$useScene5.camera;
761
+ var _use$useScene8 = use.useScene(),
762
+ camera = _use$useScene8.camera;
742
763
  // 计算平面的尺寸
743
764
  var h = 2 * Math.tan(camera.fov * Math.PI / 360) * distance * 2 * 0.85;
744
765
  var w = h * camera.aspect;
@@ -785,6 +806,7 @@ var HeadMap = /*#__PURE__*/function () {
785
806
  this.canvasList.forEach(function (canvas) {
786
807
  canvas.remove();
787
808
  });
809
+ // this.eventList.has('close') && this.eventList.get('close')()
788
810
  this.canvasList.length = 0;
789
811
  this.backEle && this.backEle.remove();
790
812
  this.heatMapPlane.removeFromParent();
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","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","unClick","addEventListener","Event","Success","undefined","targetPosition","toArray","camaraPosition","startPosition","cameraLookAt","getWorldDirection","cameraUtil","target","getMesh","dialogMesh","visible","togglePoi","then","headMap","HeadMap","distanceTo","closeHotmap","remove","removeFromParent","clear","fn","close","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","get","hLine","vLine","op","opList","btnSpan","sliderDiv","sliderBar","type","value","updateProjectionMatrix","css","styleElement","createTextNode","head","length","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, 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 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(sprite)\n this.cameraEvent(sprite, 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: SpritePoi, region: any) {\n const { camera } = use.useScene()\n const unClick = sprite.addEventListener('click', async () => {\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 const dialogMesh = await this.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -20, 5)))\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: startPosition.toArray(),\n target: cameraLookAt.toArray(),\n })\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n })\n this.gobal.scene.add(dialogMesh)\n })\n this.eventListener.add(unClick)\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n 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 // 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 }\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 }\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 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.eventList.has('close') && this.eventList.get('close')()\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 btnSpan.addEventListener('click', () => {\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 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: 20px;\n height: 20px;\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: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\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: 120px;\n height: 120px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\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: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-bottom: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-top: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-right: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-left: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 350px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\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: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\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 // 移除事件监听\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.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\n}\n"],"mappings":";+CACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAASA,gBAAgB,EAAEC,IAAI,EAAEC,cAAc,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;AACjT,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;EAWb,mBAAYC,KAAgB,EAAE;IAAA;IAAA;IAAA,oCATG,IAAIC,GAAG,EAAE;IAAA,kCACP,IAAIA,GAAG,EAAE;IAAA;IAAA;IAAA,uCAGb,IAAIC,GAAG,EAAE;IAAA;IAAA;IAMtC,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,CAACT,MAAM,CAAC;wBACzC,KAAI,CAACmB,WAAW,CAACnB,MAAM,EAAEL,MAAM,CAAC;wBAChC,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,MAAiB,EAAEL,MAAW,EAAE;MAAA;MAC1C,oBAAmBzB,GAAG,CAACuE,QAAQ,EAAE;QAAzB3C,MAAM,iBAANA,MAAM;MACd,IAAM4C,OAAO,GAAG1C,MAAM,CAAC2C,gBAAgB,CAAC,OAAO,0EAAE;QAAA;QAAA;UAAA;YAAA;cAC/CpE,aAAa,CAACD,WAAW,CAACsE,KAAK,EAAE,gBAAgB,EAAEpE,cAAc,CAACqE,OAAO,EAAEC,SAAS,EAAE;gBAAE/C,EAAE,EAAEJ,MAAM,CAACG,MAAM,CAACC;cAAG,CAAC,CAAC;cAEzGO,QAAQ,GAAG,IAAItC,OAAO,EAAE,CAACuC,SAAS,CAACZ,MAAM,CAACG,MAAM,CAACQ,QAAQ,CAAC;cAC1DyC,cAAwC,GAAGzC,QAAQ,CAACM,KAAK,EAAE,CAACoC,OAAO,EAAE;cACrEC,cAAwC,GAAG3C,QAAQ,CAACM,KAAK,EAAE,CAACH,GAAG,CAAC,IAAIzC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAACgF,OAAO,EAAE;cAEjGE,aAAa,GAAGpD,MAAM,CAACQ,QAAQ,CAACM,KAAK,EAAE,EAC7C;cACMuC,YAAY,GAAG,IAAInF,OAAO,EAAE,EAAC;cACnC8B,MAAM,CAACsD,iBAAiB,CAACD,YAAY,CAAC,EAAC;cACvC,MAAI,CAACrE,KAAK,CAACuE,UAAU,CAACrC,GAAG,CAAC;gBACxBV,QAAQ,EAAE2C,cAAc;gBACxBK,MAAM,EAAEP;cACV,CAAC,CAAC;cAAA;cAAA,OAEuB,MAAI,CAAC9D,YAAY,CAACsE,OAAO,CAACjD,QAAQ,EAAEA,QAAQ,CAACM,KAAK,EAAE,CAACH,GAAG,CAAC,IAAIzC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAAA;cAApGwF,UAAU;cAChB,MAAI,CAACvE,YAAY,CAAC0D,gBAAgB,CAAC,OAAO,EAAE,YAAM;gBAChD;gBACA,MAAI,CAAC7D,KAAK,CAACuE,UAAU,CAACrC,GAAG,CAAC;kBACxBV,QAAQ,EAAE4C,aAAa,CAACF,OAAO,EAAE;kBACjCM,MAAM,EAAEH,YAAY,CAACH,OAAO;gBAC9B,CAAC,CAAC;gBACFzE,aAAa,CAACD,WAAW,CAACsE,KAAK,EAAE,sBAAsB,EAAEpE,cAAc,CAACqE,OAAO,EAAEC,SAAS,EAAE;kBAAE/C,EAAE,EAAEJ,MAAM,CAACG,MAAM,CAACC;gBAAG,CAAC,CAAC;cACvH,CAAC,CAAC;cACF,MAAI,CAACjB,KAAK,CAAC6B,KAAK,CAACF,GAAG,CAAC+C,UAAU,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACjC,GAAC;MACF,IAAI,CAAChB,aAAa,CAAC/B,GAAG,CAACiC,OAAO,CAAC;IACjC;EAAC;IAAA;IAAA,OAED,oBAAW1C,MAAiB,EAAEL,MAAM,EAAE;MAAA;MACpC,qBAAmBzB,GAAG,CAACuE,QAAQ,EAAE;QAAzB3C,MAAM,kBAANA,MAAM;MACdE,MAAM,CAAC2C,gBAAgB,CAAC,OAAO,0EAAE;QAAA;QAAA;UAAA;YAAA;cAAA,IAC1B3C,MAAM,CAACyD,OAAO;gBAAA;gBAAA;cAAA;cAAA;YAAA;cAEnBzD,MAAM,CAACyD,OAAO,GAAG,KAAK;cACtBlF,aAAa,CAACD,WAAW,CAACsE,KAAK,EAAE,oBAAoB,EAAEpE,cAAc,CAACqE,OAAO,EAAEC,SAAS,EAAE;gBAAE/C,EAAE,EAAEJ,MAAM,CAAC2B,UAAU,CAAC,CAAC,CAAC,CAACvB;cAAG,CAAC,CAAC;cAC1H,MAAI,CAAC2D,SAAS,CAAC,KAAK,CAAC;cACfpD,QAAQ,GAAG,IAAItC,OAAO,EAAE,CAACuC,SAAS,CAACZ,MAAM,CAAC2B,UAAU,CAAC,CAAC,CAAC,CAAChB,QAAQ,CAAC;cACjE2C,cAAc,GAAG3C,QAAQ,CAACM,KAAK,EAAE,CAACH,GAAG,CAAC,IAAIzC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;cAElE,MAAI,CAACkF,aAAa,GAAGpD,MAAM,CAACQ,QAAQ,CAACM,KAAK,EAAE;cAC5C;cACA,MAAI,CAACuC,YAAY,GAAG,IAAInF,OAAO,EAAE,EAAC;cAClC8B,MAAM,CAACsD,iBAAiB,CAAC,MAAI,CAACD,YAAY,CAAC,EAAC;cAC5C,MAAI,CAACrE,KAAK,CAACuE,UAAU,CAACrC,GAAG,CAAC;gBACxBV,QAAQ,EAAE2C,cAAc,CAACD,OAAO,EAAE;gBAClCM,MAAM,EAAEhD,QAAQ,CAACM,KAAK,EAAE,CAACoC,OAAO;cAClC,CAAC,CAAC,CAACW,IAAI,CAAC,YAAM;gBACZ,MAAI,CAACC,OAAO,GAAG,IAAIC,OAAO,EAAE;gBAC5B,IAAMrC,IAAI,GAAG,MAAI,CAACoC,OAAO,CAAC5B,MAAM,CAACiB,cAAc,CAACa,UAAU,CAACxD,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;gBACA,MAAI,CAACoC,OAAO,CAACjB,gBAAgB,CAAC,OAAO,EAAE,YAAM;kBAC3C,MAAI,CAACoB,WAAW,EAAE;kBAClB;;kBAEA;kBACA;kBACA;kBACA;gBACF,CAAC,CAAC;cACJ,CAAC,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACH,GAAC;IACJ;EAAC;IAAA;IAAA,OAED,uBAAc;MACZ,IAAI,CAACH,OAAO,CAACI,MAAM,EAAE;MACrB,IAAI,CAACN,SAAS,CAAC,IAAI,CAAC;MAEpB,IAAI,CAAC5E,KAAK,CAACuE,UAAU,CAACrC,GAAG,CAAC;QACxBV,QAAQ,EAAE,IAAI,CAAC4C,aAAa,CAACF,OAAO,EAAE;QACtCM,MAAM,EAAE,IAAI,CAACH,YAAY,CAACH,OAAO;MACnC,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,qBAA0B;MAAA,IAAhBS,OAAO,uEAAG,IAAI;MACtB,IAAI,CAACxB,QAAQ,CAACxC,OAAO,CAAC,UAACO,MAAM,EAAK;QAChCA,MAAM,CAACyD,OAAO,GAAGA,OAAO;MAC1B,CAAC,CAAC;MACF,IAAI,CAAC1C,UAAU,CAACtB,OAAO,CAAC,UAACO,MAAM,EAAK;QAClCA,MAAM,CAACyD,OAAO,GAAGA,OAAO;MAC1B,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,kBAAS;MACP;MACA,IAAI,CAAC1C,UAAU,CAACtB,OAAO,CAAC,UAACO,MAAM,EAAK;QAClCA,MAAM,CAACiE,gBAAgB,EAAE;QACzBjE,MAAM,CAACgE,MAAM,EAAE;MACjB,CAAC,CAAC;MACF,IAAI,CAACjD,UAAU,CAACmD,KAAK,EAAE;MACvB,IAAI,CAACjC,QAAQ,CAACxC,OAAO,CAAC,UAACO,MAAM,EAAK;QAChCA,MAAM,CAACiE,gBAAgB,EAAE;QACzBjE,MAAM,CAACgE,MAAM,EAAE;MACjB,CAAC,CAAC;MACF,IAAI,CAAC/B,QAAQ,CAACiC,KAAK,EAAE;MACrB,IAAI,CAAC1B,aAAa,CAAC/C,OAAO,CAAC,UAAC0E,EAAE,EAAK;QACjCA,EAAE,EAAE;MACN,CAAC,CAAC;MACF;MACA,IAAI,IAAI,CAACP,OAAO,EACd,IAAI,CAACA,OAAO,CAACI,MAAM,EAAE;MACvB,IAAI,CAACxB,aAAa,CAAC0B,KAAK,EAAE;MAE1B,IAAI,CAACjF,YAAY,CAACmF,KAAK,EAAE;IAC3B;EAAC;EAAA;AAAA;AAGH,eAAevF,SAAS;AAAA,IAElBwC,YAAY;EAChB,wBAAc;IAAA;EAEd;EAAC;IAAA;IAAA,OAED,kBAAS;MACP;;MAEA,IAAMgD,QAAQ,GAAG,IAAI3G,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC;MAC1C,IAAM4G,OAAO,GAAG,IAAIvG,aAAa,CAACU,cAAc,CAAC,CAACG,IAAI,WAAIF,OAAO,oBAAiB;MAClF,IAAM6F,MAAM,GAAG,IAAIjH,IAAI,CAAC+G,QAAQ,EAAE,IAAI9G,iBAAiB,CAAC;QACtDiH,GAAG,EAAEF,OAAO;QACZG,IAAI,EAAEvH,UAAU;QAChBwH,WAAW,EAAE;MACf,CAAC,CAAC,CAAC;MACHH,MAAM,CAACI,OAAO,CAAC,CAACvE,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;MAC5B,OAAOkE,MAAM;IACf;;IAEA;EAAA;IAAA;IAAA,OACA,sBAAa;MACX;;MAEA,IAAM3E,KAAK,GAAG,IAAIzC,KAAK,EAAE;MACzB,IAAMkH,QAAQ,GAAG,IAAIrH,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC;MAC1C;MACA,IAAM4H,QAAQ,GAAG,IAAIjH,cAAc,CAAC;QAClCkH,YAAY,qNAKX;QACDC,cAAc,4jCAab;QACDC,QAAQ,EAAEjI,gBAAgB;QAC1BkI,SAAS,EAAE,KAAK;QAChBN,WAAW,EAAE,IAAI;QACjBD,IAAI,EAAEvH;MACR,CAAC,CAAC;MACF,IAAMqH,MAAM,GAAG,IAAIjH,IAAI,CAAC+G,QAAQ,EAAE,IAAI9G,iBAAiB,CAAC;QAAE0H,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,IAAMrE,CAAC,GAAGV,IAAI,CAACgF,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,EAAC;QACpC,IAAM9C,CAAC,GAAGlC,IAAI,CAACgF,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,EAAC;QACpC,IAAMhE,KAAK,GAAGmD,MAAM,CAAC3D,KAAK,EAAE;QAC5BQ,KAAK,CAACd,QAAQ,CAACE,IAAI,CAAC,IAAIxC,OAAO,CAAC8C,CAAC,EAAE,KAAK,EAAEwB,CAAC,CAAC,CAAC;QAC7ClB,KAAK,CAACuD,OAAO,CAAC,CAACvE,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,gBAAYmG,YAAY,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,qCAJK,EAAE;IAAA,uCACF,IAAIrG,GAAG,EAAE;IAAA,mCACL,IAAID,GAAG,EAAE;IAG1C,IAAI,CAACuG,MAAM,GAAGD,YAAY;EAC5B;EAAC;IAAA;IAAA;MAAA,0EAED,kBAAc/E,QAAQ,EAAEiF,cAAc;QAAA;QAAA;QAAA;UAAA;YAAA;cACpC,IAAI,CAACnB,KAAK,EAAE;cACZ,IAAI,CAACtE,MAAM,GAAG,IAAIrC,iBAAiB,CACjC,EAAE,EAAE+H,MAAM,CAACC,UAAU,GAAGD,MAAM,CAACE,WAAW,EAAE,GAAG,EAAE,KAAK,CACvD;cACD,IAAI,CAAC5F,MAAM,CAACQ,QAAQ,CAACE,IAAI,CAAC+E,cAAc,CAAC;cACzC,IAAI,CAACzF,MAAM,CAACI,QAAQ,CAACc,GAAG,CAAC,CAACZ,IAAI,CAACC,EAAE,GAAG,CAAC,EAAED,IAAI,CAACC,EAAE,EAAE,CAAC,CAAC;cAAA,wBAEvB,IAAI,CAACiF,MAAM,CAACxG,KAAK,CAAC6B,KAAK,CAACgF,oBAAoB,CAAC,IAAI,CAAC7F,MAAM,CAAC,EAA5EwE,OAAO,yBAAPA,OAAO,EAAEF,KAAK,yBAALA,KAAK;cAEhBwB,UAAU,GAAG,IAAIhI,MAAM,CAAC,IAAIC,cAAc,CAAC;gBAAE2G,GAAG,EAAEF,OAAO;gBAAEU,SAAS,EAAE,KAAK;gBAAEa,UAAU,EAAE;cAAM,CAAC,CAAC,CAAC;cACxGD,UAAU,CAACE,MAAM,CAAC9E,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;cAC/B4E,UAAU,CAACG,WAAW,GAAG,CAAC;cAC1BH,UAAU,CAACtF,QAAQ,CAACE,IAAI,CAACF,QAAQ,CAAC;cAE5B6B,OAAO,GAAGjE,GAAG,CAACkE,QAAQ,CAAC,YAAM;gBACjC,MAAI,CAAC4D,WAAW,CAACJ,UAAU,CAAC;cAC9B,CAAC,CAAC;cACF,IAAI,CAACpD,aAAa,CAAC/B,GAAG,CAAC0B,OAAO,CAAC;cAAA,kCAExB,IAAI8D,OAAO,CAAC,UAACC,OAAO,EAAK;gBAC9BC,UAAU,CAAC,YAAM;kBACf,IAAMC,UAAU,GAAG,MAAI,CAACC,aAAa,CAAC,MAAI,CAACvG,MAAM,EAAE8F,UAAU,CAAC;kBAC9D,IAAMhG,KAAK,GAAG,IAAIzC,KAAK,EAAE;kBACzByC,KAAK,CAACa,GAAG,CAAC2F,UAAU,CAAC;kBACrBxG,KAAK,CAACa,GAAG,CAACmF,UAAU,CAAC;kBACrB,MAAI,CAACU,WAAW,CAACC,IAAI,CAACH,UAAU,CAAC;kBACjC,MAAI,CAACE,WAAW,CAACC,IAAI,CAACX,UAAU,CAAC;kBACjCxB,KAAK,EAAE;kBACP8B,OAAO,CAACtG,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,mBAAU2F,cAAc,EAAyB;MAAA,IAAvBrF,QAAQ,uEAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;MAC7C;MACA,IAAMsG,MAAM,GAAGpJ,SAAS,CAACqJ,QAAQ,CAACvG,QAAQ,CAAC,CAAC,CAAC,CAAC;MAC9C,IAAMwG,MAAM,GAAGtJ,SAAS,CAACqJ,QAAQ,CAACvG,QAAQ,CAAC,CAAC,CAAC,CAAC;MAC9C,IAAMyG,MAAM,GAAGvJ,SAAS,CAACqJ,QAAQ,CAACvG,QAAQ,CAAC,CAAC,CAAC,CAAC;;MAE9C;MACA,IAAM0G,cAAc,GAAG,IAAIvJ,OAAO,EAAE;MACpCuJ,cAAc,CAACC,aAAa,CAACL,MAAM,CAAC;MACpCI,cAAc,CAACE,QAAQ,CAAC,IAAIzJ,OAAO,EAAE,CAAC0J,aAAa,CAACL,MAAM,CAAC,CAAC;MAC5DE,cAAc,CAACE,QAAQ,CAAC,IAAIzJ,OAAO,EAAE,CAAC2J,aAAa,CAACL,MAAM,CAAC,CAAC;;MAE5D;MACA,IAAMM,eAAe,GAAG,IAAIjJ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;MAE5C;MACA,IAAMkJ,eAAe,GAAGD,eAAe,CAACrG,KAAK,EAAE,CAACuG,YAAY,CAACP,cAAc,CAAC;;MAE5E;MACA,OAAOrB,cAAc,CAAC3E,KAAK,EAAE,CAACH,GAAG,CAACyG,eAAe,CAAC;IACpD;EAAC;IAAA;IAAA,OAED,oBAAWlH,MAAc,EAAE;MACzB,qBAAmB9B,GAAG,CAACuE,QAAQ,EAAE;QAAzB3C,MAAM,kBAANA,MAAM;;MAEd;MACA,IAAMsH,gBAAgB,GAAG5B,MAAM,CAAC4B,gBAAgB,IAAI,CAAC;MACrD;MACA,IAAMC,IAAI,GAAG,IAAItK,IAAI,EAAE,CAACuK,aAAa,CAACtH,MAAM,CAAC;MAC7C;MACA,IAAMuH,GAAG,GAAGF,IAAI,CAACE,GAAG,CAACC,OAAO,CAAC1H,MAAM,CAAC;MACpC,IAAM2H,GAAG,GAAGJ,IAAI,CAACI,GAAG,CAACD,OAAO,CAAC1H,MAAM,CAAC;MAEpC,YAAa,CAAC0F,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,IAAInI,MAAM,CAACoI,GAAG,IAAI,EAAE,EAClBD,KAAK,GAAG,CAAC,IAAI,IAAInI,MAAM,CAACoI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,MAEtCD,KAAK,GAAG,IAAI,IAAI,EAAE,GAAGnI,MAAM,CAACoI,GAAG,CAAC,GAAG,EAAE;;MAEvC;MACA,IAAIC,KAAK,GAAG,CAACV,GAAG,CAAC3G,CAAC,GAAGyG,GAAG,CAACzG,CAAC,IAAI4G,CAAC,GAAGN,gBAAgB,IAAI,IAAI,GAAGa,KAAK,CAAC;MACnE,IAAIG,MAAM,GAAG,CAACX,GAAG,CAACtH,CAAC,GAAGoH,GAAG,CAACpH,CAAC,IAAIwH,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,qBAAYpI,MAAc,EAAE;MAC1B,qBAAmB9B,GAAG,CAACuE,QAAQ,EAAE;QAAzB3C,MAAM,kBAANA,MAAM;MACd,IAAMmI,KAAK,GAAG,EAAE,GAAGnI,MAAM,CAACoI,GAAG;MAC7B;MACA,IAAMI,WAAW,GAAG,GAAG;MACvB,IAAMC,WAAW,GAAG,OAAO;MAC3B;MACA,IAAMhD,cAAc,GAAGzF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEQ,QAAQ;MACvC,IAAMkI,cAAc,GAAGxI,MAAM,CAACM,QAAQ;;MAEtC;MACA,IAAMmI,QAAQ,GAAG,CAAAlD,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEzB,UAAU,CAAC0E,cAAc,CAAC,KAAI,GAAG;;MAElE;MACA,IAAME,eAAe,GAAGtI,IAAI,CAACqH,GAAG,CAACa,WAAW,EAAElI,IAAI,CAACmH,GAAG,CAACgB,WAAW,EAAEE,QAAQ,CAAC,CAAC;MAC9E;MACA;MACAzI,MAAM,CAACC,KAAK,CAACO,IAAI,CAAC,IAAIxC,OAAO,CAAC0K,eAAe,IAAI,MAAM,GAAGT,KAAK,CAAC,EAAG,MAAM,GAAGA,KAAK,GAAIS,eAAe,EAAE,CAAC,CAAC,CAAC;IAC3G;EAAC;IAAA;IAAA,OAED,0BAAiBC,SAAS,EAAExE,EAAE,EAAE;MAC9B,IAAI,IAAI,CAACyE,SAAS,CAACC,GAAG,CAACF,SAAS,CAAC,EAC/B,IAAI,CAACC,SAAS,CAACD,SAAS,CAAC,GAAGxE,EAAE,MAE9B,IAAI,CAACyE,SAAS,CAAC5H,GAAG,CAAC2H,SAAS,EAAExE,EAAE,CAAC;IACrC;EAAC;IAAA;IAAA,OAED,uBAAcrE,MAAM,EAAEE,MAAc,EAAE;MAAA;MACpC,uBAAwB,IAAI,CAAC8I,UAAU,CAAC9I,MAAM,CAAC;QAAzCmI,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;MACZ7I,MAAM,CAAC0J,MAAM,CAACF,SAAS,CAACG,KAAK,EAAE;QAC7B,OAAO,YAAKf,KAAK,OAAI;QACrB,QAAQ,YAAKC,MAAM,OAAI;QACvB,SAAS,EAAE,cAAc;QACzB,iBAAiB,gBAAS1J,OAAO,mBAAgB;QACjD,gBAAgB,EAAE,WAAW;QAC7B,kBAAkB,EAAE,WAAW;QAC/B,UAAU,EAAE;;QAEd;QACA;MACA,CAAC,CAAC;;MAEF,IAAMyK,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,CAAC3G,gBAAgB,CAAC,OAAO,EAAE,YAAM;QACxC,MAAI,CAACiG,SAAS,CAACC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAI,CAACD,SAAS,CAACW,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5D,MAAI,CAACnF,KAAK,EAAE;MACd,CAAC,CAAC;MACF,IAAMoF,KAAK,GAAG3B,QAAQ,CAACmB,aAAa,CAAC,MAAM,CAAC;MAC5CQ,KAAK,CAACJ,SAAS,GAAG,uCAAuC;MACzDE,SAAS,CAACD,WAAW,CAACG,KAAK,CAAC;MAC5B,IAAMC,KAAK,GAAG5B,QAAQ,CAACmB,aAAa,CAAC,MAAM,CAAC;MAC5CS,KAAK,CAACL,SAAS,GAAG,uCAAuC;MACzDE,SAAS,CAACD,WAAW,CAACI,KAAK,CAAC;MAC5BV,SAAS,CAACM,WAAW,CAACC,SAAS,CAAC;;MAEhC;MACA,IAAMI,EAAE,GAAG7B,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MACxCU,EAAE,CAACN,SAAS,GAAG,gBAAgB;MAC/BL,SAAS,CAACM,WAAW,CAACK,EAAE,CAAC;MACzB,IAAMC,MAAM,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;MACjDA,MAAM,CAAClK,OAAO,CAAC,UAACC,GAAG,EAAK;QACtB,IAAMkK,OAAO,GAAG/B,QAAQ,CAACmB,aAAa,CAAC,MAAM,CAAC;QAC9CY,OAAO,CAACR,SAAS,+CAAwC1J,GAAG,CAAE;QAC9DkK,OAAO,CAACjH,gBAAgB,CAAC,OAAO,EAAE,YAAM;UACtC,QAAQjD,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,CAACmF,MAAM,CAACxG,KAAK,CAAC6B,KAAK,CAACgF,oBAAoB,CAAC7F,MAAM,CAAC;YAAvEwE,OAAO,yBAAPA,OAAO;YAAEF,KAAK,yBAALA,KAAK;UACtBpE,MAAM,CAAC4E,QAAQ,GAAG,IAAI/G,cAAc,CAAC;YAAE2G,GAAG,EAAEF,OAAO;YAAEU,SAAS,EAAE,KAAK;YAAEa,UAAU,EAAE;UAAM,CAAC,CAAC;UAC3FM,UAAU,CAAC;YAAA,OAAM/B,KAAK,EAAE;UAAA,GAAE,GAAG,CAAC;QAChC,CAAC,CAAC;QACFsF,EAAE,CAACL,WAAW,CAACO,OAAO,CAAC;MACzB,CAAC,CAAC;;MAEF;MACA,IAAMC,SAAS,GAAGhC,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MAC/Ca,SAAS,CAACT,SAAS,GAAG,yBAAyB;MAC/C,IAAMU,SAAS,GAAGjC,QAAQ,CAACmB,aAAa,CAAC,OAAO,CAAC;MACjDc,SAAS,CAACC,IAAI,GAAG,OAAO;MACxBD,SAAS,CAACvC,GAAG,GAAG,IAAI;MACpBuC,SAAS,CAACrC,GAAG,GAAG,KAAK;MACrBqC,SAAS,CAACE,KAAK,GAAG,IAAI;MACtBF,SAAS,CAACV,SAAS,GAAG,eAAe;MACrCU,SAAS,CAACnH,gBAAgB,CAAC,OAAO,EAAE,YAAM;QACxC7C,MAAM,CAACoI,GAAG,GAAG4B,SAAS,CAACE,KAAK;QAC5BlK,MAAM,CAACmK,sBAAsB,EAAE;QAC/B,6BAA2B,MAAI,CAAC3E,MAAM,CAACxG,KAAK,CAAC6B,KAAK,CAACgF,oBAAoB,CAAC7F,MAAM,CAAC;UAAvEwE,OAAO,0BAAPA,OAAO;UAAEF,KAAK,0BAALA,KAAK;QACtBpE,MAAM,CAAC4E,QAAQ,GAAG,IAAI/G,cAAc,CAAC;UAAE2G,GAAG,EAAEF,OAAO;UAAEU,SAAS,EAAE,KAAK;UAAEa,UAAU,EAAE;QAAM,CAAC,CAAC;QAC3FM,UAAU,CAAC;UAAA,OAAM/B,KAAK,EAAE;QAAA,GAAE,GAAG,CAAC;MAChC,CAAC,CAAC;MACFyF,SAAS,CAACR,WAAW,CAACS,SAAS,CAAC;MAChCf,SAAS,CAACM,WAAW,CAACQ,SAAS,CAAC;MAEhC,IAAMzD,UAAU,GAAG,IAAIjI,QAAQ,CAAC4K,SAAS,CAAC;MAC1C3C,UAAU,CAAC9F,QAAQ,CAACE,IAAI,CAACR,MAAM,CAACM,QAAQ,CAAC;MACzC,OAAO8F,UAAU;IACnB;EAAC;IAAA;IAAA,OAED,oBAAW;MACX;MACE,IAAM8D,GAAG,gzEAsFiBxL,OAAO,u8DAkEbA,OAAO,w2BAuC9B;MACG;MACA,IAAMyL,YAAY,GAAGtC,QAAQ,CAACmB,aAAa,CAAC,OAAO,CAAC;MACpDmB,YAAY,CAACd,WAAW,CAACxB,QAAQ,CAACuC,cAAc,CAACF,GAAG,CAAC,CAAC;MACtD;MACArC,QAAQ,CAACwC,IAAI,CAAChB,WAAW,CAACc,YAAY,CAAC;IACzC;EAAC;IAAA;IAAA,OAED,iBAAQ;MACN,IAAI,IAAI,CAAC7D,WAAW,EAAE;QACpB,IAAI,CAACA,WAAW,CAAC7G,OAAO,CAAC,UAAC+B,IAAI,EAAK;UACjCA,IAAI,CAACwC,MAAM,EAAE;UACbxC,IAAI,CAACyC,gBAAgB,EAAE;QACzB,CAAC,CAAC;QACF,IAAI,CAACqC,WAAW,CAACgE,MAAM,GAAG,CAAC;MAC7B;MACA;MACA,IAAI,CAAC9H,aAAa,CAAC/C,OAAO,CAAC,UAAC0E,EAAE,EAAK;QACjCA,EAAE,EAAE;MACN,CAAC,CAAC;MACF,IAAI,CAAC3B,aAAa,CAAC0B,KAAK,EAAE;MAC1B,IAAI,CAAC0E,SAAS,CAAC1E,KAAK,EAAE;IACxB;EAAC;EAAA;AAAA;AAAA,IAGGL,OAAO;EAcX,mBAAc;IAAA;IAAA,+CAbU;MACtB,GAAG,EAAE,MAAM;MACX,GAAG,EAAE,SAAS;MACd,GAAG,EAAE,SAAS;MACd,GAAG,EAAE,SAAS;MACd,GAAG,EAAE;IACP,CAAC;IAAA,mCAEkC,IAAI9E,GAAG,EAAE;IAAA;IAAA;IAAA,oCAG/B,EAAE;EAIf;;EAEA;EAAA;IAAA;IAAA,OACA,gBAAO0J,QAAQ,EAAE;MACf,IAAM8B,OAAO,GAAGlM,OAAO,CAAC2D,MAAM,CAAC;QAC7BwI,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE;QAC3BC,QAAQ,EAAE,IAAI,CAACC;MACjB,CAAC,CAAC;MACF,IAAIC,GAAG,GAAG,IAAI;MACd,IAAMzC,KAAK,GAAG3C,MAAM,CAACC,UAAU;MAC/B,IAAM2C,MAAM,GAAG5C,MAAM,CAACE,WAAW;MACjC,IAAMmF,MAAM,GAAG,EAAE;MACjB,IAAIpD,GAAG,GAAG,CAAC;MACX,OAAOmD,GAAG,EAAE,EAAE;QACZ,IAAME,GAAG,GAAG1K,IAAI,CAAC2K,KAAK,CAAC3K,IAAI,CAACgF,MAAM,EAAE,GAAG,EAAE,CAAC;QAC1CqC,GAAG,GAAGrH,IAAI,CAACqH,GAAG,CAACA,GAAG,EAAEqD,GAAG,CAAC;QACxB,IAAM1J,KAAK,GAAG;UACZN,CAAC,EAAEV,IAAI,CAAC2K,KAAK,CAAC3K,IAAI,CAACgF,MAAM,EAAE,GAAG+C,KAAK,CAAC;UACpChI,CAAC,EAAEC,IAAI,CAAC2K,KAAK,CAAC3K,IAAI,CAACgF,MAAM,EAAE,GAAGgD,MAAM,CAAC;UACrC4B,KAAK,EAAEc;QACT,CAAC;QACDD,MAAM,CAACtE,IAAI,CAACnF,KAAK,CAAC;MACpB;MACAmJ,OAAO,CAACS,OAAO,CAAC;QACdvD,GAAG,EAAHA,GAAG;QACHwD,IAAI,EAAEJ;MACR,CAAC,CAAC;;MAEF;MACA,IAAMK,OAAO,GAAG7M,OAAO,CAAC2D,MAAM,CAAC;QAC7BwI,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;QACdvD,GAAG,EAAHA,GAAG;QACHwD,IAAI,EAAEJ;MACR,CAAC,CAAC;MACF,IAAMM,eAAe,GAAG,IAAIxN,cAAc,CAAC;QACzC+G,WAAW,EAAE,IAAI;QACjBM,SAAS,EAAE,KAAK;QAChBP,IAAI,EAAEvH,UAAU;QAChB2H,YAAY,usBAWX;QACDC,cAAc,seAQV;QACJsG,QAAQ,EAAE;UACR/M,OAAO,EAAE;YACP2L,KAAK,EAAE;cAAEA,KAAK,EAAElH;YAAU;UAC5B,CAAC;UACDuI,OAAO,EAAE;YACPrB,KAAK,EAAE;cAAEA,KAAK,EAAElH;YAAU;UAC5B,CAAC;UACDwI,MAAM,EAAE;YAAEtB,KAAK,EAAE;UAAE,CAAC;UAAE;UACtBuB,OAAO,EAAE;YACPvB,KAAK,EAAE,IAAI/M,KAAK,CAAC,oBAAoB;UACvC,CAAC;UACDuO,SAAS,EAAE;YACTxB,KAAK,EAAE;UACT;QACF;MACF,CAAC,CAAC;MAEF,IAAM1F,OAAO,GAAG,IAAIxG,OAAO,CAACyM,OAAO,CAACkB,SAAS,CAACC,MAAM,CAAC;MACrDpH,OAAO,CAACqH,WAAW,GAAG,IAAI;MAC1B,IAAMC,WAAW,GAAG,IAAI9N,OAAO,CAACoN,OAAO,CAACO,SAAS,CAACC,MAAM,CAAC;MACzDE,WAAW,CAACD,WAAW,GAAG,IAAI;MAE9BR,eAAe,CAACC,QAAQ,CAAC/M,OAAO,CAAC2L,KAAK,GAAG1F,OAAO;MAChD6G,eAAe,CAACC,QAAQ,CAACC,OAAO,CAACrB,KAAK,GAAG4B,WAAW;MAEpD,qBAAmB1N,GAAG,CAACuE,QAAQ,EAAE;QAAzB3C,MAAM,kBAANA,MAAM;MACd;MACA,IAAM6H,CAAC,GAAG,CAAC,GAAGvH,IAAI,CAACyL,GAAG,CAAC/L,MAAM,CAACoI,GAAG,GAAG9H,IAAI,CAACC,EAAE,GAAG,GAAG,CAAC,GAAGoI,QAAQ,GAAG,CAAC,GAAG,IAAI;MACxE,IAAMf,CAAC,GAAGC,CAAC,GAAG7H,MAAM,CAACgM,MAAM;MAE3B,IAAMC,eAAe,GAAG,IAAIrO,aAAa,CAACgK,CAAC,EAAEC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC;MAC1D,IAAMqE,YAAY,GAAG,IAAI1O,IAAI,CAACyO,eAAe,EAAEZ,eAAe,CAAC;MAC/Da,YAAY,CAAC9L,QAAQ,CAACc,GAAG,CAAC,CAACZ,IAAI,CAACC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAE7C,IAAI,CAAC2L,YAAY,GAAGA,YAAY;MAChC,OAAOA,YAAY;IACrB;EAAC;IAAA;IAAA,OAED,0BAAiBrD,SAAS,EAAExE,EAAE,EAAE;MAC9B,IAAI,IAAI,CAACyE,SAAS,CAACC,GAAG,CAACF,SAAS,CAAC,EAC/B,IAAI,CAACC,SAAS,CAACD,SAAS,CAAC,GAAGxE,EAAE,MAE9B,IAAI,CAACyE,SAAS,CAAC5H,GAAG,CAAC2H,SAAS,EAAExE,EAAE,CAAC;IACrC;EAAC;IAAA;IAAA,OAED,mBAAU;MAAA;MACR,IAAI,CAAC8H,OAAO,GAAGpE,QAAQ,CAACmB,aAAa,CAAC,KAAK,CAAC;MAC5C,IAAI,CAACiD,OAAO,CAAC7C,SAAS,GAAG,UAAU;MACnC,IAAI,CAAC6C,OAAO,CAACC,SAAS,GAAG,IAAI;MAC7BrE,QAAQ,CAACsE,IAAI,CAAC9C,WAAW,CAAC,IAAI,CAAC4C,OAAO,CAAC;MACvC,IAAI,CAACA,OAAO,CAACtJ,gBAAgB,CAAC,OAAO,EAAE,YAAM;QAC3C,MAAI,CAACiG,SAAS,CAACC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAI,CAACD,SAAS,CAACW,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5D;MACF,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,qBAAY;MACV;MACA,IAAMmC,MAAM,GAAG7D,QAAQ,CAACmB,aAAa,CAAC,QAAQ,CAAC;MAC/C0C,MAAM,CAACxC,KAAK,CAACkD,MAAM,GAAG,IAAI;MAC1B;MACAV,MAAM,CAACvD,KAAK,GAAG3C,MAAM,CAACC,UAAU;MAChCiG,MAAM,CAACtD,MAAM,GAAG5C,MAAM,CAACE,WAAW;MAClCmC,QAAQ,CAACsE,IAAI,CAAC9C,WAAW,CAACqC,MAAM,CAAC;MACjC,IAAI,CAACW,UAAU,CAAC9F,IAAI,CAACmF,MAAM,CAAC;MAC5B,OAAOA,MAAM;IACf;EAAC;IAAA;IAAA,OAED,kBAAS;MACP,IAAI,CAACW,UAAU,CAAC5M,OAAO,CAAC,UAACiM,MAAM,EAAK;QAClCA,MAAM,CAAC1H,MAAM,EAAE;MACjB,CAAC,CAAC;MACF,IAAI,CAACqI,UAAU,CAAC/B,MAAM,GAAG,CAAC;MAC1B,IAAI,CAAC2B,OAAO,IAAI,IAAI,CAACA,OAAO,CAACjI,MAAM,EAAE;MACrC,IAAI,CAACgI,YAAY,CAAC/H,gBAAgB,EAAE;MACpC,IAAI,CAAC+H,YAAY,CAAChI,MAAM,EAAE;IAC5B;EAAC;EAAA;AAAA"}
1
+ {"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","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","unClick","addEventListener","currentDialogMesh","close","Event","Success","undefined","targetPosition","toArray","camaraPosition","startPosition","cameraLookAt","getWorldDirection","cameraUtil","target","getMesh","visible","togglePoi","then","headMap","HeadMap","distanceTo","orbitControls","enabled","closeHotmap","remove","removeFromParent","clear","fn","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","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, 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(sprite)\n this.cameraEvent(sprite, 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: SpritePoi, region: any) {\n const { camera } = use.useScene()\n const unClick = sprite.addEventListener('click', 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 this.eventListener.add(unClick)\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n 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 }\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 btnSpan.addEventListener('click', () => {\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 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: 20px;\n height: 20px;\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: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\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: 120px;\n height: 120px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\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: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-bottom: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-top: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-right: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-left: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 350px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\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: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\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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"}
@@ -6,6 +6,7 @@ declare class CircleManage {
6
6
  readonly circleMesh: Map<string, Object3D>;
7
7
  private interactionManager;
8
8
  private peoplePoi;
9
+ private clickPoi;
9
10
  constructor(gobal: Factory3D);
10
11
  generateCircle(belongTo: string): void;
11
12
  remove(): void;
@@ -6,7 +6,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
6
6
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
7
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
8
  import { Mesh, MeshPhysicalMaterial, SphereGeometry, Vector3, use, utils } from '@anov/3d-core';
9
- import { Css2DPoi, EAnimationType } from '@anov/3d-ability';
9
+ import { EAnimationType, SpritePoi } from '@anov/3d-ability';
10
10
  import { regionMap } from "../regionData";
11
11
  import { usePath } from "../3d";
12
12
  var emitter = utils.emitter;
@@ -18,6 +18,7 @@ var CircleManage = /*#__PURE__*/function () {
18
18
  _defineProperty(this, "circleMesh", new Map());
19
19
  _defineProperty(this, "interactionManager", void 0);
20
20
  _defineProperty(this, "peoplePoi", void 0);
21
+ _defineProperty(this, "clickPoi", void 0);
21
22
  this.gobal = gobal;
22
23
  this.scene = gobal.scene.scene;
23
24
  this.interactionManager = utils.storeManagement.get('interactionManager');
@@ -26,6 +27,7 @@ var CircleManage = /*#__PURE__*/function () {
26
27
  key: "generateCircle",
27
28
  value: function generateCircle(belongTo) {
28
29
  var _this = this;
30
+ this.remove();
29
31
  var geometry = new SphereGeometry(2, 32, 16);
30
32
  var material = new MeshPhysicalMaterial({
31
33
  color: 0xFED602,
@@ -51,6 +53,7 @@ var CircleManage = /*#__PURE__*/function () {
51
53
  });
52
54
  this.circleMesh.clear();
53
55
  this.peoplePoi && this.peoplePoi.removeFromParent();
56
+ this.peoplePoi = this.clickPoi = null;
54
57
  }
55
58
  }, {
56
59
  key: "setVisible",
@@ -67,26 +70,41 @@ var CircleManage = /*#__PURE__*/function () {
67
70
  var _this2 = this;
68
71
  this.interactionManager.add(mesh);
69
72
  var showPeoplePoi = function showPeoplePoi(data) {
73
+ var eventName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hover';
70
74
  if (_this2.peoplePoi) {
71
- if (_this2.peoplePoi.name !== data.id) _this2.peoplePoi.removeFromParent();else return;
75
+ if (_this2.peoplePoi.name !== data.id) {
76
+ _this2.peoplePoi.removeFromParent();
77
+ } else {
78
+ if (eventName === 'click') _this2.clickPoi = _this2.peoplePoi;
79
+ return;
80
+ }
72
81
  }
73
- _this2.peoplePoi = new Css2DPoi(data.name, {
74
- width: 110,
75
- height: 33,
76
- img: "".concat(usePath, "person.png"),
77
- style: {
78
- padding: '2px 20px 10px 45px',
79
- fontSize: '14px',
80
- pointerEvents: 'none',
81
- marginTop: '-20px'
82
- },
82
+ _this2.clickPoi = null;
83
+ var dom = document.createElement('div');
84
+ Object.assign(dom.style, {
85
+ fontSize: '24px',
86
+ backgroundImage: "url(".concat(usePath, "person.png)"),
87
+ backgroundSize: '100% 100%',
88
+ backgroundRepeat: 'no-repeat',
89
+ display: 'flex',
90
+ justifyContent: 'center',
91
+ alignItems: 'center',
92
+ color: '#fff',
93
+ pointerEvents: 'auto',
94
+ height: '67px',
95
+ width: '214px',
96
+ padding: '0 0 12px 15px'
97
+ });
98
+ dom.innerText = data.name;
99
+ _this2.peoplePoi = new SpritePoi(dom, {
100
+ scale: [12, 3.8, 1],
83
101
  animation: {
84
102
  type: EAnimationType.fadeIn,
85
103
  duration: 0.2
86
104
  }
87
105
  });
88
106
  _this2.peoplePoi.name = data.id;
89
- _this2.peoplePoi.position.copy(mesh.position.clone());
107
+ _this2.peoplePoi.position.copy(mesh.position.clone().add(new Vector3(0, 2, 0)));
90
108
  _this2.scene.add(_this2.peoplePoi);
91
109
  };
92
110
  mesh.addEventListener('click', function () {
@@ -95,14 +113,15 @@ var CircleManage = /*#__PURE__*/function () {
95
113
  position: position.toArray(),
96
114
  target: [data.position[0], data.position[1], data.position[2]]
97
115
  }).then(function () {});
98
- showPeoplePoi(data);
116
+ emitter.emit('peoplemanagement-person-click', data);
117
+ showPeoplePoi(data, 'click');
99
118
  });
100
119
  mesh.addEventListener('mouseover', function () {
101
120
  showPeoplePoi(data);
102
- emitter.emit('peoplemanagement-person-click', data);
103
121
  });
104
122
  mesh.addEventListener('mouseout', function () {
105
- if (_this2.peoplePoi) {
123
+ var _this2$clickPoi;
124
+ if (_this2.peoplePoi && _this2.peoplePoi.name !== ((_this2$clickPoi = _this2.clickPoi) === null || _this2$clickPoi === void 0 ? void 0 : _this2$clickPoi.name)) {
106
125
  _this2.peoplePoi.removeFromParent();
107
126
  _this2.peoplePoi = null;
108
127
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Mesh","MeshPhysicalMaterial","SphereGeometry","Vector3","use","utils","Css2DPoi","EAnimationType","regionMap","usePath","emitter","CircleManage","gobal","Map","scene","interactionManager","storeManagement","get","belongTo","geometry","material","color","metalness","roughness","circle","data","getData","forEach","people","mesh","clone","name","id","position","fromArray","add","bindEvent","circleMesh","set","removeFromParent","clear","peoplePoi","visible","poi","showPeoplePoi","width","height","img","style","padding","fontSize","pointerEvents","marginTop","animation","type","fadeIn","duration","copy","addEventListener","getCameraPosition","cameraUtil","toArray","target","then","emit","targetPosition","distance","cameraPosition","direction","useScene","camera","subVectors","normalize","multiplyScalar","regionKey","Object","keys","find","key"],"sources":["../../../src/factory/unit/circle.ts"],"sourcesContent":["import { Mesh, MeshPhysicalMaterial, SphereGeometry, Vector3, use, utils } from '@anov/3d-core'\nimport type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\n\nimport { usePath } from '../3d'\n\nconst { emitter } = utils\n\nclass CircleManage {\n private gobal: Factory3D\n private scene: Scene\n readonly circleMesh: Map<string, Object3D> = new Map()\n private interactionManager\n private peoplePoi!: Object3D | null\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generateCircle(belongTo: string) {\n const geometry = new SphereGeometry(2, 32, 16)\n const material = new MeshPhysicalMaterial({ color: 0xFED602, metalness: 0.1, roughness: 0.5 })\n const circle = new Mesh(geometry, material)\n\n const data = this.getData(belongTo)\n data.forEach((people) => {\n const mesh = circle.clone()\n mesh.name = people.id\n mesh.position.fromArray(people.position)\n this.scene.add(mesh)\n this.bindEvent(mesh, people)\n this.circleMesh.set(people.id, mesh)\n })\n }\n\n remove() {\n this.circleMesh.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this.circleMesh.clear()\n this.peoplePoi && this.peoplePoi.removeFromParent()\n }\n\n setVisible(visible = true) {\n // 控制CYCLE的隐藏、显示\n this.circleMesh.forEach((poi) => {\n poi.visible = visible\n })\n }\n\n private bindEvent(mesh: Mesh, data) {\n this.interactionManager.add(mesh)\n\n const showPeoplePoi = (data: any) => {\n if (this.peoplePoi) {\n if (this.peoplePoi.name !== data.id)\n this.peoplePoi.removeFromParent()\n else\n return\n }\n this.peoplePoi = new Css2DPoi(data.name, {\n width: 110,\n height: 33,\n img: `${usePath}person.png`,\n style: {\n padding: '2px 20px 10px 45px',\n fontSize: '14px',\n pointerEvents: 'none',\n marginTop: '-20px',\n },\n animation: {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n },\n })\n this.peoplePoi.name = data.id\n\n this.peoplePoi.position.copy(mesh.position.clone())\n this.scene.add(this.peoplePoi)\n }\n\n mesh.addEventListener('click', () => {\n const position = this.getCameraPosition(new Vector3().fromArray(data.position), 43.5)\n this.gobal.cameraUtil.set({\n position: position.toArray(),\n target: [data.position[0], data.position[1], data.position[2]],\n }).then(() => {\n })\n showPeoplePoi(data)\n })\n mesh.addEventListener('mouseover', () => {\n showPeoplePoi(data)\n emitter.emit('peoplemanagement-person-click', data)\n })\n mesh.addEventListener('mouseout', () => {\n if (this.peoplePoi) {\n this.peoplePoi.removeFromParent()\n this.peoplePoi = null\n }\n })\n }\n\n private getCameraPosition(targetPosition, distance) {\n // 计算相机的位置\n const cameraPosition = new Vector3()\n const direction = new Vector3() // 目标对象指向相机的方向\n\n const { camera } = use.useScene()\n // 计算相机朝向目标对象的方向\n direction.subVectors(camera.position, targetPosition).normalize()\n\n // 将相机沿着目标对象方向移动以保持距离\n cameraPosition.copy(targetPosition).add(direction.multiplyScalar(distance))\n return cameraPosition\n }\n\n private getData(belongTo) {\n const regionKey = Object.keys(regionMap).find((key: any) => {\n return regionMap[key].id === belongTo\n })\n\n return regionMap[regionKey] && regionMap[regionKey].people\n }\n}\n\nexport default CircleManage"],"mappings":"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"}
1
+ {"version":3,"names":["Mesh","MeshPhysicalMaterial","SphereGeometry","Vector3","use","utils","EAnimationType","SpritePoi","regionMap","usePath","emitter","CircleManage","gobal","Map","scene","interactionManager","storeManagement","get","belongTo","remove","geometry","material","color","metalness","roughness","circle","data","getData","forEach","people","mesh","clone","name","id","position","fromArray","add","bindEvent","circleMesh","set","removeFromParent","clear","peoplePoi","clickPoi","visible","poi","showPeoplePoi","eventName","dom","document","createElement","Object","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","pointerEvents","height","width","padding","innerText","scale","animation","type","fadeIn","duration","copy","addEventListener","getCameraPosition","cameraUtil","toArray","target","then","emit","targetPosition","distance","cameraPosition","direction","useScene","camera","subVectors","normalize","multiplyScalar","regionKey","keys","find","key"],"sources":["../../../src/factory/unit/circle.ts"],"sourcesContent":["import { Mesh, MeshPhysicalMaterial, SphereGeometry, Vector3, use, utils } from '@anov/3d-core'\nimport type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\n\nimport { usePath } from '../3d'\n\nconst { emitter } = utils\n\nclass CircleManage {\n private gobal: Factory3D\n private scene: Scene\n readonly circleMesh: Map<string, Object3D> = new Map()\n private interactionManager\n private peoplePoi!: Object3D | null\n private clickPoi: Object3D | null\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generateCircle(belongTo: string) {\n this.remove()\n const geometry = new SphereGeometry(2, 32, 16)\n const material = new MeshPhysicalMaterial({ color: 0xFED602, metalness: 0.1, roughness: 0.5 })\n const circle = new Mesh(geometry, material)\n\n const data = this.getData(belongTo)\n data.forEach((people) => {\n const mesh = circle.clone()\n mesh.name = people.id\n mesh.position.fromArray(people.position)\n this.scene.add(mesh)\n this.bindEvent(mesh, people)\n this.circleMesh.set(people.id, mesh)\n })\n }\n\n remove() {\n this.circleMesh.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this.circleMesh.clear()\n this.peoplePoi && this.peoplePoi.removeFromParent()\n this.peoplePoi = this.clickPoi = null\n }\n\n setVisible(visible = true) {\n // 控制CYCLE的隐藏、显示\n this.circleMesh.forEach((poi) => {\n poi.visible = visible\n })\n }\n\n private bindEvent(mesh: Mesh, data) {\n this.interactionManager.add(mesh)\n\n const showPeoplePoi = (data: any, eventName = 'hover') => {\n if (this.peoplePoi) {\n if (this.peoplePoi.name !== data.id) {\n this.peoplePoi.removeFromParent()\n }\n else {\n if (eventName === 'click')\n this.clickPoi = this.peoplePoi\n return\n }\n }\n this.clickPoi = null\n\n const dom = document.createElement('div')\n Object.assign(dom.style, {\n fontSize: '24px',\n backgroundImage: `url(${usePath}person.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n height: '67px',\n width: '214px',\n padding: '0 0 12px 15px',\n })\n dom.innerText = data.name\n this.peoplePoi = new SpritePoi(dom, {\n scale: [12, 3.8, 1],\n animation: {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n },\n })\n this.peoplePoi.name = data.id\n\n this.peoplePoi.position.copy(mesh.position.clone().add(new Vector3(0, 2, 0)))\n this.scene.add(this.peoplePoi)\n }\n\n mesh.addEventListener('click', () => {\n const position = this.getCameraPosition(new Vector3().fromArray(data.position), 43.5)\n this.gobal.cameraUtil.set({\n position: position.toArray(),\n target: [data.position[0], data.position[1], data.position[2]],\n }).then(() => {\n })\n emitter.emit('peoplemanagement-person-click', data)\n showPeoplePoi(data, 'click')\n })\n mesh.addEventListener('mouseover', () => {\n showPeoplePoi(data)\n })\n mesh.addEventListener('mouseout', () => {\n if (this.peoplePoi && this.peoplePoi.name !== this.clickPoi?.name) {\n this.peoplePoi.removeFromParent()\n this.peoplePoi = null\n }\n })\n }\n\n private getCameraPosition(targetPosition, distance) {\n // 计算相机的位置\n const cameraPosition = new Vector3()\n const direction = new Vector3() // 目标对象指向相机的方向\n\n const { camera } = use.useScene()\n // 计算相机朝向目标对象的方向\n direction.subVectors(camera.position, targetPosition).normalize()\n\n // 将相机沿着目标对象方向移动以保持距离\n cameraPosition.copy(targetPosition).add(direction.multiplyScalar(distance))\n return cameraPosition\n }\n\n private getData(belongTo) {\n const regionKey = Object.keys(regionMap).find((key: any) => {\n return regionMap[key].id === belongTo\n })\n\n return regionMap[regionKey] && regionMap[regionKey].people\n }\n}\n\nexport default CircleManage"],"mappings":"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"}
@@ -12,6 +12,7 @@ declare class CylinderManage {
12
12
  private currentoperate;
13
13
  constructor(gobal: Factory3D, options?: CylinderManageOption);
14
14
  generateCylinder(): void;
15
+ setVisible(visible?: boolean): void;
15
16
  getMesh(data: any): Mesh;
16
17
  private cameraListenerHandle;
17
18
  private cameraAddListener;
@@ -131,22 +131,29 @@ var CylinderManage = /*#__PURE__*/function () {
131
131
  _this2.gobal.regionPlane.planeMesh.forEach(function (mesh) {
132
132
  mesh.visible = false;
133
133
  });
134
- _this2.gobal.cameraUtil.set({
135
- position: [item.points[0], item.points[1] + item.height / 2 + 100, item.points[2] + 100],
136
- target: [item.points[0], item.points[1] + item.height / 2, item.points[2]]
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
+ _this2.gobal.cameraUtil.focus({
147
+ target: item.area,
148
+ pitch: 0
137
149
  }).then(function () {
138
150
  emitter.emit('peoplemanagement-camera-enter', item);
151
+ _this2.setVisible();
139
152
  var currentGroup = _this2.cylinderMesh.get(item.belongTo);
140
153
  currentGroup.visible = false;
141
154
  _this2.currentoperate = item.belongTo;
142
- _this2.cameraAddListener();
143
155
  });
144
156
  };
145
-
146
- // @ts-ignore
147
- _this2.gobal.regionPlane.planeMesh.get(item.id).addEventListener('click', function () {
148
- handleClick();
149
- });
150
157
  group.addEventListener('click', function () {
151
158
  handleClick();
152
159
  });
@@ -172,6 +179,15 @@ var CylinderManage = /*#__PURE__*/function () {
172
179
  });
173
180
  this.controlAddListener();
174
181
  }
182
+ }, {
183
+ key: "setVisible",
184
+ value: function setVisible() {
185
+ var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
186
+ // 控制CYCLE的隐藏、显示
187
+ this.cylinderMesh.forEach(function (bar) {
188
+ bar.visible = visible;
189
+ });
190
+ }
175
191
  }, {
176
192
  key: "getMesh",
177
193
  value: function getMesh(data) {
@@ -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","set","target","then","currentGroup","cylinderMesh","cameraAddListener","addEventListener","font","font2","fontPromiseAll","Promise","all","meshArr","geometry","center","useframe","camera","controlAddListener","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 }\n\n // @ts-ignore\n (this.gobal.regionPlane.planeMesh as Map<string, Object3D>).get(item.id).addEventListener('click', () => {\n handleClick()\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 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","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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"}
@@ -21,6 +21,7 @@ declare class HandlerManage implements BaseModule {
21
21
  clickBar(params: any): void;
22
22
  clickCamera(params: any): void;
23
23
  clickGasCancel(): void;
24
+ releaseBar(): void;
24
25
  click(name: any): void;
25
26
  setInspectTarget(params: {
26
27
  target: string;
@@ -46,6 +46,14 @@ var HandlerManage = /*#__PURE__*/function () {
46
46
  // @ts-ignore
47
47
  this.app.caseInstance.cameraPoi.closeHotmap();
48
48
  }
49
+ }, {
50
+ key: "releaseBar",
51
+ value: function releaseBar() {
52
+ // @ts-ignore
53
+ this.app.caseInstance.cylinder.setVisible();
54
+ // @ts-ignore
55
+ this.app.caseInstance.circle.remove();
56
+ }
49
57
  }, {
50
58
  key: "click",
51
59
  value: function click(name) {
@@ -1 +1 @@
1
- {"version":3,"names":["map","HF","HPU","LLCV","CMP1","CMP2","invertMap","HandlerManage","app","params","click","id","title","caseInstance","cameraPoi","closeHotmap","name","object","sceneControl","scene","getObjectByName","console","log","dispatchEvent","type","target","inspection","goToInspectionTarget","inspectionObject","stop","contineMove"],"sources":["../../../src/factory/unit/handle.ts"],"sourcesContent":["import { regionMap } from '../regionData'\nimport type Anov3D from '../../sdkEntry'\nimport type { BaseModule } from '../../utils/abstract'\n\nexport const map = {\n HF: 0.04,\n HPU: 0.15,\n LLCV: 0.24,\n CMP1: 0.40,\n CMP2: 0.68,\n}\n\nexport const invertMap = {\n 0.04: 'HF',\n 0.15: 'HPU',\n 0.24: 'LLCV',\n 0.40: 'CMP1',\n 0.68: 'CMP2',\n}\n\nclass HandlerManage implements BaseModule {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n\n clickPerson(params: any) {\n this.click(params.id)\n }\n\n clickBar(params: any) {\n this.click(params.title)\n }\n\n clickCamera(params: any) {\n this.click(params.id)\n }\n\n clickGasCancel() {\n // @ts-ignore\n this.app.caseInstance.cameraPoi.closeHotmap()\n }\n\n click(name) {\n // 根据名称动态获取Mesh对象\n const object = this.app.sceneControl.scene!.getObjectByName(name)\n\n // 触发事件\n if (object) {\n console.log('Mesh对象已找到!')\n // 手动调用Mesh对象上的点击事件处理函数\n object.dispatchEvent({ type: 'click' })\n }\n else {\n console.log('未找到Mesh对象!')\n }\n }\n\n setInspectTarget(params: { target: string }) {\n const { target } = params\n\n // @ts-ignore\n return this.app.caseInstance.inspection.goToInspectionTarget(map[target])\n }\n\n stopInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.stop()\n }\n\n continueInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.contineMove()\n }\n}\n\nexport default HandlerManage\n"],"mappings":";;;;;;;AAIA,OAAO,IAAMA,GAAG,GAAG;EACjBC,EAAE,EAAE,IAAI;EACRC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,IAAMC,SAAS,GAAG;EACvB,IAAI,EAAE,IAAI;EACV,IAAI,EAAE,KAAK;EACX,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE;AACR,CAAC;AAAA,IAEKC,aAAa;EAEjB,uBAAYC,GAAW,EAAE;IAAA;IAAA;IACvB,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAAC;IAAA;IAAA,OAED,qBAAYC,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACE,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,kBAASF,MAAW,EAAE;MACpB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACG,KAAK,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,qBAAYH,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACE,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,0BAAiB;MACf;MACA,IAAI,CAACH,GAAG,CAACK,YAAY,CAACC,SAAS,CAACC,WAAW,EAAE;IAC/C;EAAC;IAAA;IAAA,OAED,eAAMC,IAAI,EAAE;MACV;MACA,IAAMC,MAAM,GAAG,IAAI,CAACT,GAAG,CAACU,YAAY,CAACC,KAAK,CAAEC,eAAe,CAACJ,IAAI,CAAC;;MAEjE;MACA,IAAIC,MAAM,EAAE;QACVI,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;QACzB;QACAL,MAAM,CAACM,aAAa,CAAC;UAAEC,IAAI,EAAE;QAAQ,CAAC,CAAC;MACzC,CAAC,MACI;QACHH,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;MAC3B;IACF;EAAC;IAAA;IAAA,OAED,0BAAiBb,MAA0B,EAAE;MAC3C,IAAQgB,MAAM,GAAKhB,MAAM,CAAjBgB,MAAM;;MAEd;MACA,OAAO,IAAI,CAACjB,GAAG,CAACK,YAAY,CAACa,UAAU,CAACC,oBAAoB,CAAC3B,GAAG,CAACyB,MAAM,CAAC,CAAC;IAC3E;EAAC;IAAA;IAAA,OAED,uBAAc;MACZ;MACA,IAAI,CAACjB,GAAG,CAACK,YAAY,CAACa,UAAU,CAACE,gBAAgB,CAACC,IAAI,EAAE;IAC1D;EAAC;IAAA;IAAA,OAED,2BAAkB;MAChB;MACA,IAAI,CAACrB,GAAG,CAACK,YAAY,CAACa,UAAU,CAACE,gBAAgB,CAACE,WAAW,EAAE;IACjE;EAAC;EAAA;AAAA;AAGH,eAAevB,aAAa"}
1
+ {"version":3,"names":["map","HF","HPU","LLCV","CMP1","CMP2","invertMap","HandlerManage","app","params","click","id","title","caseInstance","cameraPoi","closeHotmap","cylinder","setVisible","circle","remove","name","object","sceneControl","scene","getObjectByName","console","log","dispatchEvent","type","target","inspection","goToInspectionTarget","inspectionObject","stop","contineMove"],"sources":["../../../src/factory/unit/handle.ts"],"sourcesContent":["import { regionMap } from '../regionData'\nimport type Anov3D from '../../sdkEntry'\nimport type { BaseModule } from '../../utils/abstract'\n\nexport const map = {\n HF: 0.04,\n HPU: 0.15,\n LLCV: 0.24,\n CMP1: 0.40,\n CMP2: 0.68,\n}\n\nexport const invertMap = {\n 0.04: 'HF',\n 0.15: 'HPU',\n 0.24: 'LLCV',\n 0.40: 'CMP1',\n 0.68: 'CMP2',\n}\n\nclass HandlerManage implements BaseModule {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n\n clickPerson(params: any) {\n this.click(params.id)\n }\n\n clickBar(params: any) {\n this.click(params.title)\n }\n\n clickCamera(params: any) {\n this.click(params.id)\n }\n\n clickGasCancel() {\n // @ts-ignore\n this.app.caseInstance.cameraPoi.closeHotmap()\n }\n\n releaseBar() {\n // @ts-ignore\n this.app.caseInstance.cylinder.setVisible()\n // @ts-ignore\n this.app.caseInstance.circle.remove()\n }\n\n click(name) {\n // 根据名称动态获取Mesh对象\n const object = this.app.sceneControl.scene!.getObjectByName(name)\n\n // 触发事件\n if (object) {\n console.log('Mesh对象已找到!')\n // 手动调用Mesh对象上的点击事件处理函数\n object.dispatchEvent({ type: 'click' })\n }\n else {\n console.log('未找到Mesh对象!')\n }\n }\n\n setInspectTarget(params: { target: string }) {\n const { target } = params\n\n // @ts-ignore\n return this.app.caseInstance.inspection.goToInspectionTarget(map[target])\n }\n\n stopInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.stop()\n }\n\n continueInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.contineMove()\n }\n}\n\nexport default HandlerManage\n"],"mappings":";;;;;;;AAIA,OAAO,IAAMA,GAAG,GAAG;EACjBC,EAAE,EAAE,IAAI;EACRC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,IAAMC,SAAS,GAAG;EACvB,IAAI,EAAE,IAAI;EACV,IAAI,EAAE,KAAK;EACX,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE;AACR,CAAC;AAAA,IAEKC,aAAa;EAEjB,uBAAYC,GAAW,EAAE;IAAA;IAAA;IACvB,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAAC;IAAA;IAAA,OAED,qBAAYC,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACE,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,kBAASF,MAAW,EAAE;MACpB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACG,KAAK,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,qBAAYH,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACE,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,0BAAiB;MACf;MACA,IAAI,CAACH,GAAG,CAACK,YAAY,CAACC,SAAS,CAACC,WAAW,EAAE;IAC/C;EAAC;IAAA;IAAA,OAED,sBAAa;MACX;MACA,IAAI,CAACP,GAAG,CAACK,YAAY,CAACG,QAAQ,CAACC,UAAU,EAAE;MAC3C;MACA,IAAI,CAACT,GAAG,CAACK,YAAY,CAACK,MAAM,CAACC,MAAM,EAAE;IACvC;EAAC;IAAA;IAAA,OAED,eAAMC,IAAI,EAAE;MACV;MACA,IAAMC,MAAM,GAAG,IAAI,CAACb,GAAG,CAACc,YAAY,CAACC,KAAK,CAAEC,eAAe,CAACJ,IAAI,CAAC;;MAEjE;MACA,IAAIC,MAAM,EAAE;QACVI,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;QACzB;QACAL,MAAM,CAACM,aAAa,CAAC;UAAEC,IAAI,EAAE;QAAQ,CAAC,CAAC;MACzC,CAAC,MACI;QACHH,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;MAC3B;IACF;EAAC;IAAA;IAAA,OAED,0BAAiBjB,MAA0B,EAAE;MAC3C,IAAQoB,MAAM,GAAKpB,MAAM,CAAjBoB,MAAM;;MAEd;MACA,OAAO,IAAI,CAACrB,GAAG,CAACK,YAAY,CAACiB,UAAU,CAACC,oBAAoB,CAAC/B,GAAG,CAAC6B,MAAM,CAAC,CAAC;IAC3E;EAAC;IAAA;IAAA,OAED,uBAAc;MACZ;MACA,IAAI,CAACrB,GAAG,CAACK,YAAY,CAACiB,UAAU,CAACE,gBAAgB,CAACC,IAAI,EAAE;IAC1D;EAAC;IAAA;IAAA,OAED,2BAAkB;MAChB;MACA,IAAI,CAACzB,GAAG,CAACK,YAAY,CAACiB,UAAU,CAACE,gBAAgB,CAACE,WAAW,EAAE;IACjE;EAAC;EAAA;AAAA;AAGH,eAAe3B,aAAa"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.64",
3
+ "version": "0.0.65",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",