@anov/3d 0.0.30 → 0.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/anov3d.js +6 -1
- package/dist/anov3d.js.map +1 -1
- package/dist/applicationApi.js +9 -1
- package/dist/applicationApi.js.map +1 -1
- package/dist/factory/3d.d.ts +7 -3
- package/dist/factory/3d.js +43 -32
- package/dist/factory/3d.js.map +1 -1
- package/dist/factory/regionData.js +10 -4
- package/dist/factory/regionData.js.map +1 -1
- package/dist/factory/unit/CameraPoi.d.ts +2 -2
- package/dist/factory/unit/CameraPoi.js +57 -45
- package/dist/factory/unit/CameraPoi.js.map +1 -1
- package/dist/factory/unit/circle.d.ts +1 -0
- package/dist/factory/unit/circle.js +25 -7
- package/dist/factory/unit/circle.js.map +1 -1
- package/dist/factory/unit/cylinder.d.ts +2 -0
- package/dist/factory/unit/cylinder.js +76 -13
- package/dist/factory/unit/cylinder.js.map +1 -1
- package/dist/factory/unit/districtLine.d.ts +11 -0
- package/dist/factory/unit/districtLine.js +73 -0
- package/dist/factory/unit/districtLine.js.map +1 -0
- package/dist/factory/unit/glsl/highway/fragmentShader.js +1 -1
- package/dist/factory/unit/glsl/highway/fragmentShader.js.map +1 -1
- package/dist/factory/unit/handle.js +1 -1
- package/dist/factory/unit/handle.js.map +1 -1
- package/dist/factory/unit/index.d.ts +2 -2
- package/dist/factory/unit/index.js +5 -19
- package/dist/factory/unit/index.js.map +1 -1
- package/dist/factory/unit/inspection/InspectionObject.d.ts +3 -0
- package/dist/factory/unit/inspection/InspectionObject.js +17 -47
- package/dist/factory/unit/inspection/InspectionObject.js.map +1 -1
- package/dist/factory/unit/inspection/index.js +18 -11
- package/dist/factory/unit/inspection/index.js.map +1 -1
- package/dist/factory/unit/poi.js +2 -1
- package/dist/factory/unit/poi.js.map +1 -1
- package/dist/factory/utils/fontMesh.js +2 -1
- package/dist/factory/utils/fontMesh.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Clock","Color","EdgesGeometry","Group","LineBasicMaterial","LineCurve3","LineSegments","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","Quaternion","ShaderMaterial","TubeGeometry","Vector3","use","utils","Css2DPoi","SpritePoi","Tween","createFinirMaterial","usePath","MessageType","sendToMessage","EMessageStatus","fragmentShader","vertexShader","isCheck","targetProgresspoints","modelLoader","InspectionObject","inspection","targetQuaternion","mesh","cb","clock","quaternion","equals","animation","useframe","delta","getDelta","step","rotateTowards","loadGLTF","glb","div","document","createElement","style","position","img","src","span","innerText","top","left","transform","color","fontSize","fontWeight","appendChild","poi","width","height","img2","css2d","set","visible","scale","fly1","scene","getObjectByName","fly2","fly3","fly4","copy","clone","add","rotation","z","getSportsProgress","isLock","stop","checkAnimation","group","minCamera","y","rotateY","Math","PI","model","traverse","child","layers","enable","gobal","curve","loadModel","control","moveWithLine","groundCurve","walkCurve","getWalkCurve","isHide","walkCurveMesh","points","length","removeFromParent","geometry","dispose","tube","transparent","uniforms","alpha","value","Event","Success","undefined","percentage","getProgress","targetMesh","updateMatrixWorld","localForward","worldForward","applyQuaternion","normalize","target","direction","sub","setFromUnitVectors","dotProduct","dot","angleRadians","acos","angleDegrees","flipQuaternion","setFromAxisAngle","multiply","lastFromPositin","currentPositin","targetPosition","vTo","vFrom","Promise","resolve","emitter","on","data","progress","isAnimation","key","Object","keys","find","p","num","parseFloat","targetMeshId","lookAt","pipeline","realModl","contineMove","setTimeout","currentAnchor","anchorObject","get","name","material","rotationMatrix","startQuaternion","up","setFromRotationMatrix","forwardTween","t","to","onUpdate","obj","slerp","backwardTween","onComplete","finirMesh","Number","finirMaterialV2","type","lineSegments","subscription","then","start","off","currentPosition","targetProgress","startRotate","upCurve","x","upControl","loop","lookat","addEventListener","tempCurve","generateTempPath","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","getPointAt","setProgress","contine","speed","setSpeed","emit"],"sources":["../../../../src/factory/unit/inspection/InspectionObject.ts"],"sourcesContent":["import type { Camera } from '@anov/3d-core'\nimport { BoxGeometry, Clock, Color, EdgesGeometry, Group, LineBasicMaterial, LineCurve3, LineSegments, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, Quaternion, ShaderChunk, ShaderMaterial, TubeGeometry, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi, addColorifyPass, createHighSelectedTool } from '@anov/3d-ability'\nimport { Tween } from '@tweenjs/tween.js'\nimport { createFinirMaterial } from '../../utils/finirMaterial'\nimport { usePath } from '../../3d'\nimport { MessageType, sendToMessage } from '../../../utils/messageFn'\nimport { EMessageStatus } from '../../../messageStatus'\nimport { invertMap } from '../handle'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { isCheck, targetProgresspoints } from './lineData'\n\nconst modelLoader = new ModelLoader()\n\nclass InspectionObject {\n model\n private inspection\n private control\n private tempLine\n private isLock = false\n private isAnimation = false\n walkCurveMesh\n css2d: Css2DPoi\n\n constructor(inspection) {\n this.inspection = inspection\n }\n\n private async loadModel() {\n const glb = await (await modelLoader.loadGLTF(`${usePath}car.glb`, false, true, './draco/'))\n\n const div = document.createElement('div')\n div.style.position = 'relative'\n\n const img = document.createElement('img')\n img.src = `${usePath}aerialVehicle02.png`\n\n const span = document.createElement('span')\n span.innerText = '巡检无人机'\n span.style.position = 'absolute'\n span.style.top = '10px'\n span.style.left = '50%'\n span.style.transform = 'translateX(-30%)'\n\n span.style.color = 'white'\n span.style.fontSize = '20px'\n span.style.fontWeight = 'bold'\n\n div.appendChild(img)\n div.appendChild(span)\n\n const poi = new SpritePoi(div, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n const img2 = document.createElement('img')\n img2.src = `${usePath}aerialVehicle01.png`\n const css2d = new Css2DPoi(img2)\n\n css2d.position.set(0, 0, 0)\n css2d.visible = false\n\n poi.scale.set(100, 40, 1)\n\n const fly1 = glb.scene.getObjectByName('fly1')\n const fly2 = glb.scene.getObjectByName('fly1_1')\n const fly3 = glb.scene.getObjectByName('fly1_2')\n const fly4 = glb.scene.getObjectByName('fly1_3')\n\n use.useframe(() => {\n poi.position.copy(glb.scene.position.clone().add(new Vector3(0, 10, 0)))\n\n fly1.rotation.z += 1.3\n fly2.rotation.z += 1.3\n fly3.rotation.z += 1.3\n fly4.rotation.z += 1.3\n\n if (isCheck(this.getSportsProgress)\n && !this.isLock) {\n this.stop()\n this.checkAnimation(this.getSportsProgress)\n }\n })\n\n // const box = new Mesh(new BoxGeometry(10, 10, 10), new MeshBasicMaterial({ color: 0xFF0000 }))\n\n const group = new Group()\n group.add(glb.scene)\n group.add(poi)\n group.add(this.inspection.minCamera)\n\n // box.scale.set(0.1, 0.1, 0.1)\n\n this.inspection.minCamera.position.copy(glb.scene.position)\n this.inspection.minCamera.position.z -= 5\n this.inspection.minCamera.position.y += 5\n this.inspection.minCamera.rotateY(Math.PI)\n\n this.model = group\n\n glb.scene.scale.set(5, 5, 5)\n\n glb.scene.traverse((child) => {\n child.layers.enable(2)\n })\n\n this.inspection.gobal.scene.add(this.model)\n this.inspection.gobal.scene.add(css2d)\n }\n\n async startMove(curve) {\n if (!this.model)\n await this.loadModel()\n\n this.control = utils.moveWithLine(this.model, curve, 10, {\n groundCurve: this.inspection.groundCurve,\n })\n\n let walkCurve = this.control.getWalkCurve()\n let walkCurveMesh\n\n use.useframe(() => {\n if (!this.inspection.isHide) {\n walkCurve = this.control.getWalkCurve()\n\n if (walkCurveMesh) {\n if (walkCurve && walkCurve.points.length > 2) {\n walkCurveMesh.removeFromParent()\n walkCurveMesh.geometry.dispose()\n walkCurveMesh.geometry = new TubeGeometry(walkCurve, 10000, 3, 2, false)\n this.inspection.gobal.scene.add(walkCurveMesh)\n }\n else {\n walkCurveMesh.removeFromParent()\n walkCurveMesh.geometry.dispose()\n }\n }\n else {\n if (walkCurve.points.length > 2) {\n const tube = new TubeGeometry(walkCurve, 10000, 3, 2, false)\n walkCurveMesh = new Mesh(tube, new ShaderMaterial({\n transparent: true,\n uniforms: {\n alpha: {\n value: 0.9,\n },\n },\n vertexShader,\n fragmentShader,\n }))\n this.walkCurveMesh = walkCurveMesh\n this.inspection.gobal.scene.add(walkCurveMesh)\n }\n }\n }\n else {\n if (walkCurveMesh) {\n walkCurveMesh.removeFromParent()\n walkCurveMesh.geometry.dispose()\n }\n }\n\n sendToMessage(MessageType.Event, 'onInspectProgress', EMessageStatus.Success, undefined, {\n percentage: this.getSportsProgress,\n })\n })\n }\n\n get getSportsProgress() {\n if (!this.control)\n return 0\n\n return this.control.getProgress()\n }\n\n private getTargetQuaternion(targetMesh: Group) {\n targetMesh.updateMatrixWorld(true)\n const localForward = new Vector3(0, 0, -1)\n const worldForward = localForward.applyQuaternion(targetMesh.quaternion.clone()).normalize()\n\n const target = targetMesh.position.clone()\n const direction = target.sub(this.model.position).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(worldForward, direction)\n\n const dotProduct = worldForward.dot(direction)\n const angleRadians = Math.acos(dotProduct)\n const angleDegrees = angleRadians * (180 / Math.PI)\n\n // todo: some problem\n if (angleDegrees < 60) {\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n }\n }\n\n private getTargetQuaternionV2(lastFromPositin: Vector3, currentPositin: Vector3, targetPosition: Vector3) {\n const vTo = targetPosition.clone().sub(currentPositin).normalize()\n const vFrom = currentPositin.clone().sub(lastFromPositin).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(vFrom, vTo)\n\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n\n return targetQuaternion\n }\n\n subscription() {\n return new Promise((resolve) => {\n utils.emitter.on('continue', (data) => {\n resolve(data)\n })\n })\n }\n\n private checkAnimation(progress: number) {\n this.isLock = true\n this.isAnimation = true\n\n const key = Object.keys(targetProgresspoints).find((p) => {\n const num = parseFloat(p)\n if (progress >= num && progress < num + 0.01)\n return true\n })\n\n const targetMeshId = targetProgresspoints[key].lookAt\n\n let targetMesh: Group | null = null\n\n if (targetMeshId === 'GY_GD_guandaofamen_5')\n targetMesh = this.inspection.gobal.pipeline.getObjectByName(targetMeshId) as Group\n\n else\n targetMesh = this.inspection.gobal.realModl.getObjectByName(targetMeshId) as Group\n\n if (!targetMesh) {\n this.contineMove()\n this.isAnimation = false\n setTimeout(() => {\n this.isLock = false\n }, 500)\n return\n }\n\n const currentAnchor = this.inspection.anchorObject.get(targetProgresspoints[key].name)\n\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('yellow') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#facb2b') })\n })\n\n setTimeout(() => {\n const rotationMatrix = new Matrix4()\n\n const targetQuaternion = new Quaternion()\n const startQuaternion = this.model.quaternion.clone()\n\n rotationMatrix.lookAt(targetMesh.position, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n const forwardTween = new Tween({ t: 0 })\n .to({ t: 1 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n const backwardTween = new Tween({ t: 1 })\n .to({ t: 0 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n forwardTween.onComplete(() => {\n let finirMesh: Group | null = null\n\n sendToMessage(MessageType.Event, 'onReachTarget', EMessageStatus.Success, undefined, {\n target: targetProgresspoints[key].name,\n })\n\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(2)\n\n if (Number(key) === 0.15 || Number(key) === 0.24 || Number(key) === 0.40) {\n (this.inspection.minCamera as Camera).layers.enable(3)\n // @ts-ignore\n if (!targetMesh.finirMesh) {\n finirMesh = targetMesh.clone() as any as Group\n\n const finirMaterialV2 = createFinirMaterial('yellow', 5.3)\n\n finirMesh.traverse((child) => {\n child.layers.set(3)\n\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = finirMaterialV2\n\n // @ts-ignore\n const lineSegments = new LineSegments(new EdgesGeometry(child.geometry as any), new LineBasicMaterial({ color: 'yellow' }))\n\n lineSegments.layers.set(3)\n finirMesh.add(lineSegments)\n }\n })\n\n // @ts-ignore\n targetMesh.finirMesh = finirMesh\n\n this.inspection.gobal.scene.add(finirMesh)\n }\n else {\n // @ts-ignore\n finirMesh = targetMesh.finirMesh\n\n finirMesh.visible = true\n }\n }\n\n if (Number(key) === 0.15 || Number(key) === 0.24) {\n this.subscription().then((data) => {\n if (data) {\n finirMesh.visible = false\n backwardTween.start()\n\n utils.emitter.off('continue')\n }\n })\n }\n else {\n setTimeout(() => {\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(0)\n\n if (Number(key) === 0.40)\n finirMesh.visible = false\n\n backwardTween.start()\n }, 6000)\n }\n })\n\n setTimeout(() => {\n forwardTween.start()\n }, 1000)\n\n backwardTween.onComplete(() => {\n this.isAnimation = false\n this.contineMove()\n\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('#cdccca') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#fff') })\n })\n\n setTimeout(() => {\n this.isLock = false\n }, 500)\n })\n }, 1000)\n }\n\n generateTempPath(currentPosition: Vector3, targetPosition: Vector3) {\n return new LineCurve3(currentPosition, targetPosition)\n }\n\n private startRotate = (targetQuaternion: Quaternion, mesh: Group, cb: () => void) => {\n const clock = new Clock()\n\n if (mesh.quaternion.equals(targetQuaternion))\n return cb()\n\n const animation = use.useframe(() => {\n const delta = clock.getDelta()\n if (!mesh.quaternion.equals(targetQuaternion)) {\n const step = 1 * delta\n mesh.quaternion.rotateTowards(targetQuaternion, step)\n }\n else {\n animation()\n cb()\n }\n },\n )\n }\n\n gotoTarget(targetPosition: Vector3, targetProgress: number) {\n if (this.isAnimation)\n return\n\n this.isAnimation = true\n\n this.control.stop()\n\n const rotationMatrix = new Matrix4()\n const targetQuaternion = new Quaternion()\n\n rotationMatrix.lookAt(targetPosition, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n this.startRotate(targetQuaternion, this.model,\n () => {\n const currentPosition = this.model.position\n const upCurve = new LineCurve3(currentPosition, new Vector3(currentPosition.x, currentPosition.y + 100, currentPosition.z))\n const upControl = utils.moveWithLine(this.model, upCurve, 10, { loop: false, lookat: targetPosition })\n\n upControl.addEventListener('end', () => {\n const tempCurve = this.generateTempPath(currentPosition, new Vector3(targetPosition.x, targetPosition.y + 100, targetPosition.z))\n const tempControl = utils.moveWithLine(this.model, tempCurve, 50, { loop: false, lookat: false })\n\n tempControl.addEventListener('end', () => {\n const lastPosition = this.model.position\n const downCurve = new LineCurve3(lastPosition, new Vector3(lastPosition.x, lastPosition.y - 100, lastPosition.z))\n const downControl = utils.moveWithLine(this.model, downCurve, 10, { loop: false, lookat: false })\n\n downControl.addEventListener('end', () => {\n const rotationMatrix2 = new Matrix4()\n const targetQuaternion2 = new Quaternion()\n\n const targetPosition2 = this.inspection.curve.getPointAt((targetProgress + 0.01) % 1)\n\n rotationMatrix2.lookAt(targetPosition2, this.model.position, this.model.up)\n targetQuaternion2.setFromRotationMatrix(rotationMatrix2)\n\n this.startRotate(targetQuaternion2, this.model, () => {\n setTimeout(() => {\n this.isAnimation = false\n this.control.setProgress(targetProgress)\n this.control.contine()\n }, 500)\n })\n })\n })\n })\n })\n }\n\n setSpeed(speed: number) {\n if (this.control)\n this.control.setSpeed(speed)\n }\n\n stop() {\n if (this.control)\n this.control.stop()\n }\n\n contineMove() {\n if (this.control)\n this.control.contine()\n\n utils.emitter.emit('continue', true)\n }\n\n dispose() { }\n}\n\nexport default InspectionObject"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Clock","Color","EdgesGeometry","Group","LineBasicMaterial","LineCurve3","LineSegments","Matrix4","MeshBasicMaterial","ModelLoader","Quaternion","Vector3","use","utils","Css2DPoi","SpritePoi","Tween","createFinirMaterial","usePath","MessageType","sendToMessage","EMessageStatus","isCheck","targetProgresspoints","modelLoader","InspectionObject","inspection","targetQuaternion","mesh","cb","clock","quaternion","equals","animation","useframe","delta","getDelta","step","rotateTowards","loadGLTF","glb","div","document","createElement","style","position","img","src","span","innerText","top","left","transform","color","fontSize","fontWeight","appendChild","poi","width","height","img2","css2d","set","visible","scale","fly1","scene","getObjectByName","fly2","fly3","fly4","copy","clone","add","rotation","z","getSportsProgress","isLock","stop","checkAnimation","group","minCamera","y","rotateY","Math","PI","model","gobal","interactionManager","traverse","child","layers","enable","curve","loadModel","control","moveWithLine","groundCurve","Event","Success","undefined","percentage","getProgress","targetMesh","updateMatrixWorld","localForward","worldForward","applyQuaternion","normalize","target","direction","sub","setFromUnitVectors","dotProduct","dot","angleRadians","acos","angleDegrees","flipQuaternion","setFromAxisAngle","multiply","lastFromPositin","currentPositin","targetPosition","vTo","vFrom","Promise","resolve","emitter","on","data","progress","isAnimation","key","Object","keys","find","p","num","parseFloat","targetMeshId","lookAt","pipeline","realModl","contineMove","setTimeout","currentAnchor","anchorObject","get","name","material","rotationMatrix","startQuaternion","up","setFromRotationMatrix","forwardTween","t","to","onUpdate","obj","slerp","backwardTween","onComplete","finirMesh","Number","finirMaterialV2","type","lineSegments","geometry","subscription","then","start","off","currentPosition","targetProgress","startRotate","upCurve","x","upControl","loop","lookat","addEventListener","tempCurve","generateTempPath","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","getPointAt","setProgress","contine","speed","setSpeed","emit"],"sources":["../../../../src/factory/unit/inspection/InspectionObject.ts"],"sourcesContent":["import type { Camera } from '@anov/3d-core'\nimport { BoxGeometry, Clock, Color, EdgesGeometry, Group, LineBasicMaterial, LineCurve3, LineSegments, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, Quaternion, ShaderChunk, ShaderMaterial, TubeGeometry, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi, addColorifyPass, createHighSelectedTool } from '@anov/3d-ability'\nimport { Tween } from '@tweenjs/tween.js'\nimport { createFinirMaterial } from '../../utils/finirMaterial'\nimport { usePath } from '../../3d'\nimport { MessageType, sendToMessage } from '../../../utils/messageFn'\nimport { EMessageStatus } from '../../../messageStatus'\nimport { invertMap } from '../handle'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { isCheck, targetProgresspoints } from './lineData'\n\nconst modelLoader = new ModelLoader()\n\nclass InspectionObject {\n model\n private inspection\n private control\n private tempLine\n private isLock = false\n private isAnimation = false\n walkCurveMesh\n css2d: Css2DPoi\n\n constructor(inspection) {\n this.inspection = inspection\n }\n\n private async loadModel() {\n const glb = await (await modelLoader.loadGLTF(`${usePath}car.glb`, false, true, './draco/'))\n\n const div = document.createElement('div')\n div.style.position = 'relative'\n\n const img = document.createElement('img')\n img.src = `${usePath}aerialVehicle02.png`\n\n const span = document.createElement('span')\n span.innerText = '巡检无人机'\n span.style.position = 'absolute'\n span.style.top = '10px'\n span.style.left = '50%'\n span.style.transform = 'translateX(-30%)'\n\n span.style.color = 'white'\n span.style.fontSize = '20px'\n span.style.fontWeight = 'bold'\n\n div.appendChild(img)\n div.appendChild(span)\n\n const poi = new SpritePoi(div, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n const img2 = document.createElement('img')\n img2.src = `${usePath}aerialVehicle01.png`\n const css2d = new Css2DPoi(img2)\n\n css2d.position.set(0, 0, 0)\n css2d.visible = false\n\n poi.scale.set(100, 40, 1)\n\n const fly1 = glb.scene.getObjectByName('fly1')\n const fly2 = glb.scene.getObjectByName('fly1_1')\n const fly3 = glb.scene.getObjectByName('fly1_2')\n const fly4 = glb.scene.getObjectByName('fly1_3')\n\n use.useframe(() => {\n poi.position.copy(glb.scene.position.clone().add(new Vector3(0, 10, 0)))\n\n fly1.rotation.z += 1.3\n fly2.rotation.z += 1.3\n fly3.rotation.z += 1.3\n fly4.rotation.z += 1.3\n\n if (isCheck(this.getSportsProgress)\n && !this.isLock) {\n this.stop()\n this.checkAnimation(this.getSportsProgress)\n }\n })\n\n const group = new Group()\n group.add(glb.scene)\n group.add(poi)\n group.add(this.inspection.minCamera)\n\n this.inspection.minCamera.position.copy(glb.scene.position)\n this.inspection.minCamera.position.z -= 5\n this.inspection.minCamera.position.y += 5\n this.inspection.minCamera.rotateY(Math.PI)\n\n this.model = group\n\n this.inspection.gobal.interactionManager.add(poi)\n\n // poi.addEventListener('click', () => {\n // css2d.visible = true\n // })\n\n // css2d.addEventListener('click', () => {\n // css2d.visible = false\n // })\n\n glb.scene.scale.set(5, 5, 5)\n glb.scene.traverse((child) => {\n child.layers.enable(2)\n })\n\n this.inspection.gobal.scene.add(this.model)\n this.inspection.gobal.scene.add(css2d)\n }\n\n async startMove(curve) {\n if (!this.model)\n await this.loadModel()\n\n this.control = utils.moveWithLine(this.model, curve, 10, {\n groundCurve: this.inspection.groundCurve,\n })\n\n use.useframe(() => {\n sendToMessage(MessageType.Event, 'onInspectProgress', EMessageStatus.Success, undefined, {\n percentage: this.getSportsProgress,\n })\n })\n }\n\n get getSportsProgress() {\n if (!this.control)\n return 0\n\n return this.control.getProgress()\n }\n\n private getTargetQuaternion(targetMesh: Group) {\n targetMesh.updateMatrixWorld(true)\n const localForward = new Vector3(0, 0, -1)\n const worldForward = localForward.applyQuaternion(targetMesh.quaternion.clone()).normalize()\n\n const target = targetMesh.position.clone()\n const direction = target.sub(this.model.position).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(worldForward, direction)\n\n const dotProduct = worldForward.dot(direction)\n const angleRadians = Math.acos(dotProduct)\n const angleDegrees = angleRadians * (180 / Math.PI)\n\n // todo: some problem\n if (angleDegrees < 60) {\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n }\n }\n\n private getTargetQuaternionV2(lastFromPositin: Vector3, currentPositin: Vector3, targetPosition: Vector3) {\n const vTo = targetPosition.clone().sub(currentPositin).normalize()\n const vFrom = currentPositin.clone().sub(lastFromPositin).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(vFrom, vTo)\n\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n\n return targetQuaternion\n }\n\n subscription() {\n return new Promise((resolve) => {\n utils.emitter.on('continue', (data) => {\n resolve(data)\n })\n })\n }\n\n private checkAnimation(progress: number) {\n this.isLock = true\n this.isAnimation = true\n\n const key = Object.keys(targetProgresspoints).find((p) => {\n const num = parseFloat(p)\n if (progress >= num && progress < num + 0.01)\n return true\n })\n\n const targetMeshId = targetProgresspoints[key].lookAt\n\n let targetMesh: Group | null = null\n\n if (targetMeshId === 'GY_GD_guandaofamen_5')\n targetMesh = this.inspection.gobal.pipeline.getObjectByName(targetMeshId) as Group\n\n else\n targetMesh = this.inspection.gobal.realModl.getObjectByName(targetMeshId) as Group\n\n if (!targetMesh) {\n this.contineMove()\n this.isAnimation = false\n setTimeout(() => {\n this.isLock = false\n }, 500)\n return\n }\n\n const currentAnchor = this.inspection.anchorObject.get(targetProgresspoints[key].name)\n\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('yellow') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#facb2b') })\n })\n\n setTimeout(() => {\n const rotationMatrix = new Matrix4()\n\n const targetQuaternion = new Quaternion()\n const startQuaternion = this.model.quaternion.clone()\n\n rotationMatrix.lookAt(targetMesh.position, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n const forwardTween = new Tween({ t: 0 })\n .to({ t: 1 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n const backwardTween = new Tween({ t: 1 })\n .to({ t: 0 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n forwardTween.onComplete(() => {\n let finirMesh: Group | null = null\n\n sendToMessage(MessageType.Event, 'onReachTarget', EMessageStatus.Success, undefined, {\n target: targetProgresspoints[key].name,\n })\n\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(2)\n\n if (Number(key) === 0.15 || Number(key) === 0.24 || Number(key) === 0.40) {\n (this.inspection.minCamera as Camera).layers.enable(3)\n // @ts-ignore\n if (!targetMesh.finirMesh) {\n finirMesh = targetMesh.clone() as any as Group\n\n const finirMaterialV2 = createFinirMaterial('yellow', 5.3)\n\n finirMesh.traverse((child) => {\n child.layers.set(3)\n\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = finirMaterialV2\n\n // @ts-ignore\n const lineSegments = new LineSegments(new EdgesGeometry(child.geometry as any), new LineBasicMaterial({ color: 'yellow' }))\n\n lineSegments.layers.set(3)\n finirMesh.add(lineSegments)\n }\n })\n\n // @ts-ignore\n targetMesh.finirMesh = finirMesh\n\n this.inspection.gobal.scene.add(finirMesh)\n }\n else {\n // @ts-ignore\n finirMesh = targetMesh.finirMesh\n\n finirMesh.visible = true\n }\n }\n\n if (Number(key) === 0.15 || Number(key) === 0.24) {\n this.subscription().then((data) => {\n if (data) {\n finirMesh.visible = false\n backwardTween.start()\n\n utils.emitter.off('continue')\n }\n })\n }\n else {\n setTimeout(() => {\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(0)\n\n if (Number(key) === 0.40)\n finirMesh.visible = false\n\n backwardTween.start()\n }, 6000)\n }\n })\n\n setTimeout(() => {\n forwardTween.start()\n }, 1000)\n\n backwardTween.onComplete(() => {\n this.isAnimation = false\n this.contineMove()\n\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('#cdccca') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#fff') })\n })\n\n setTimeout(() => {\n this.isLock = false\n }, 500)\n })\n }, 1000)\n }\n\n generateTempPath(currentPosition: Vector3, targetPosition: Vector3) {\n return new LineCurve3(currentPosition, targetPosition)\n }\n\n private startRotate = (targetQuaternion: Quaternion, mesh: Group, cb: () => void) => {\n const clock = new Clock()\n\n if (mesh.quaternion.equals(targetQuaternion))\n return cb()\n\n const animation = use.useframe(() => {\n const delta = clock.getDelta()\n if (!mesh.quaternion.equals(targetQuaternion)) {\n const step = 1 * delta\n mesh.quaternion.rotateTowards(targetQuaternion, step)\n }\n else {\n animation()\n cb()\n }\n },\n )\n }\n\n gotoTarget(targetPosition: Vector3, targetProgress: number) {\n if (this.isAnimation)\n return\n\n this.isAnimation = true\n\n this.control.stop()\n\n const rotationMatrix = new Matrix4()\n const targetQuaternion = new Quaternion()\n\n rotationMatrix.lookAt(targetPosition, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n this.startRotate(targetQuaternion, this.model,\n () => {\n const currentPosition = this.model.position\n const upCurve = new LineCurve3(currentPosition, new Vector3(currentPosition.x, currentPosition.y + 100, currentPosition.z))\n const upControl = utils.moveWithLine(this.model, upCurve, 10, { loop: false, lookat: targetPosition })\n\n upControl.addEventListener('end', () => {\n const tempCurve = this.generateTempPath(currentPosition, new Vector3(targetPosition.x, targetPosition.y + 100, targetPosition.z))\n const tempControl = utils.moveWithLine(this.model, tempCurve, 50, { loop: false, lookat: false })\n\n tempControl.addEventListener('end', () => {\n const lastPosition = this.model.position\n const downCurve = new LineCurve3(lastPosition, new Vector3(lastPosition.x, lastPosition.y - 100, lastPosition.z))\n const downControl = utils.moveWithLine(this.model, downCurve, 10, { loop: false, lookat: false })\n\n downControl.addEventListener('end', () => {\n const rotationMatrix2 = new Matrix4()\n const targetQuaternion2 = new Quaternion()\n\n const targetPosition2 = this.inspection.curve.getPointAt((targetProgress + 0.01) % 1)\n\n rotationMatrix2.lookAt(targetPosition2, this.model.position, this.model.up)\n targetQuaternion2.setFromRotationMatrix(rotationMatrix2)\n\n this.startRotate(targetQuaternion2, this.model, () => {\n setTimeout(() => {\n this.isAnimation = false\n this.control.setProgress(targetProgress)\n this.control.contine()\n }, 500)\n })\n })\n })\n })\n })\n }\n\n setSpeed(speed: number) {\n if (this.control)\n this.control.setSpeed(speed)\n }\n\n stop() {\n if (this.control)\n this.control.stop()\n }\n\n contineMove() {\n if (this.control)\n this.control.contine()\n\n utils.emitter.emit('continue', true)\n }\n\n /**\n * todo: now temporarily not implemented\n */\n dispose() { }\n}\n\nexport default InspectionObject"],"mappings":"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"}
|
|
@@ -5,9 +5,8 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
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
|
-
import { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial,
|
|
8
|
+
import { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, PerspectiveCamera, ShaderMaterial, TubeGeometry, use } from '@anov/3d-core';
|
|
9
9
|
import { RoundLineGeometry, initPostEffects } from '@anov/3d-ability';
|
|
10
|
-
import { usePath } from "../../3d";
|
|
11
10
|
import fragmentShader from "../glsl/highway/fragmentShader";
|
|
12
11
|
import vertexShader from "../glsl/highway/vertexShader";
|
|
13
12
|
import { flyLinePoints, groundLinePoints, targetProgresspoints } from "./lineData";
|
|
@@ -70,17 +69,21 @@ var Inspection = /*#__PURE__*/function () {
|
|
|
70
69
|
radius: 20,
|
|
71
70
|
close: true
|
|
72
71
|
});
|
|
73
|
-
var texture = new TextureLoader().load("".concat(usePath, "roll.png"));
|
|
74
|
-
texture.rotation = Math.PI;
|
|
75
|
-
texture.wrapS = RepeatWrapping;
|
|
76
|
-
texture.wrapT = MirroredRepeatWrapping;
|
|
77
|
-
texture.repeat.set(1, 2);
|
|
78
72
|
var tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false);
|
|
79
73
|
var mesh2 = new Mesh(tube, new ShaderMaterial({
|
|
80
74
|
transparent: true,
|
|
81
75
|
uniforms: {
|
|
82
76
|
alpha: {
|
|
83
|
-
value: 0.
|
|
77
|
+
value: 0.6
|
|
78
|
+
},
|
|
79
|
+
centerColor: {
|
|
80
|
+
value: new Color(0xFFFFFF)
|
|
81
|
+
},
|
|
82
|
+
sideColor: {
|
|
83
|
+
value: new Color('#F75332')
|
|
84
|
+
},
|
|
85
|
+
otherColor: {
|
|
86
|
+
value: new Color('#D23F22')
|
|
84
87
|
}
|
|
85
88
|
},
|
|
86
89
|
vertexShader: vertexShader,
|
|
@@ -138,9 +141,6 @@ var Inspection = /*#__PURE__*/function () {
|
|
|
138
141
|
this.gobal.scene.add(minCamera);
|
|
139
142
|
this.minCamera = minCamera;
|
|
140
143
|
this.minCamera.layers.set(0);
|
|
141
|
-
initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {
|
|
142
|
-
type: 'sub'
|
|
143
|
-
});
|
|
144
144
|
}
|
|
145
145
|
}, {
|
|
146
146
|
key: "getPathLength",
|
|
@@ -175,6 +175,13 @@ var Inspection = /*#__PURE__*/function () {
|
|
|
175
175
|
var _this3 = this;
|
|
176
176
|
this.isHide = true;
|
|
177
177
|
if (this.viewElement && document.body.contains(this.viewElement)) document.body.removeChild(this.viewElement);
|
|
178
|
+
if (this.gobal.scene.camera === this.minCamera) {
|
|
179
|
+
this.gobal.scene.camera = this.gobal.scene.cutoutCamera;
|
|
180
|
+
this.gobal.scene.cutoutCamera = this.minCamera;
|
|
181
|
+
initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {
|
|
182
|
+
type: 'sub'
|
|
183
|
+
});
|
|
184
|
+
}
|
|
178
185
|
this.gobal.scene.cutout = false;
|
|
179
186
|
this.gobal.scene.cutMain(this.gobal.scene.renderer);
|
|
180
187
|
this.line.visible = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Color","CylinderGeometry","Group","Mesh","MeshBasicMaterial","MirroredRepeatWrapping","PerspectiveCamera","RepeatWrapping","ShaderMaterial","TextureLoader","TubeGeometry","use","RoundLineGeometry","initPostEffects","usePath","fragmentShader","vertexShader","flyLinePoints","groundLinePoints","targetProgresspoints","InspectionObject","Inspection","gobal","Map","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","viewElement","document","createElement","style","position","width","height","top","cursor","addEventListener","toggleView","flyLine","radius","close","groundLine","texture","load","rotation","Math","PI","wrapS","wrapT","repeat","set","tube","mesh2","transparent","uniforms","alpha","value","groundGroup","add","y","groundCurve","line","scene","anchorMesh","anchorGroup","Object","keys","forEach","key","demoPoints","getPointAt","Number","singleAnchorGroup","cylinder","color","cylinder1","name","x","z","anchorObject","minCamera","window","innerWidth","innerHeight","cutoutCamera","cutoutArea","layers","renderer","type","getLength","startMove","targetProgress","targetPosition","gotoTarget","isHide","body","appendChild","cutout","visible","model","contains","removeChild","cutMain","check","useframe"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, RepeatWrapping, ShaderChunk, ShaderMaterial, TextureLoader, TubeGeometry, use } from '@anov/3d-core'\nimport { RoundLineGeometry, addColorifyPass, createHighSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport { usePath } from '../../3d'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { flyLinePoints, groundLinePoints, targetProgresspoints } from './lineData'\nimport InspectionObject from './InspectionObject'\n\nclass Inspection {\n gobal: Factory3D\n inspectionObject\n curve\n groundCurve\n line: Group\n viewElement: HTMLDivElement\n isHide = true\n anchorObject: Map<string, Group> = new Map()\n anchorGroup: Group\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n this.hide()\n\n const viewElement = document.createElement('div')\n\n viewElement.style.position = 'absolute'\n viewElement.style.width = '200px'\n viewElement.style.height = '200px'\n viewElement.style.top = '100px'\n viewElement.style.cursor = 'pointer'\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n const texture = new TextureLoader().load(`${usePath}roll.png`)\n texture.rotation = Math.PI\n texture.wrapS = RepeatWrapping\n texture.wrapT = MirroredRepeatWrapping\n texture.repeat.set(1, 2)\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false)\n const mesh2 = new Mesh(tube, new ShaderMaterial({\n transparent: true,\n uniforms: {\n alpha: {\n value: 0.2,\n },\n },\n vertexShader,\n fragmentShader,\n }))\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh2)\n groundGroup.position.y = 3\n\n this.groundCurve = groundLine.curve\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n\n this.anchorMesh()\n }\n\n private anchorMesh() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const singleAnchorGroup = new Group()\n\n const cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({ color: new Color('#cdccca') }))\n const cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({ color: new Color('#fff') }))\n cylinder1.position.y = 2\n\n cylinder.name = 'cylinder'\n cylinder1.name = 'cylinder1'\n\n singleAnchorGroup.add(cylinder, cylinder1)\n singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z)\n\n this.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup)\n anchorGroup.add(singleAnchorGroup)\n })\n this.anchorGroup = anchorGroup\n this.gobal.scene.add(anchorGroup)\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(60,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n this.gobal.scene.cutoutArea = { x: 0, y: 0, width: 200, height: 200 }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n\n this.minCamera.layers.set(0)\n\n initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {\n type: 'sub',\n })\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n this.isHide = false\n\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.anchorGroup.visible = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n this.isHide = true\n\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n this.anchorGroup.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Color","CylinderGeometry","Group","Mesh","MeshBasicMaterial","PerspectiveCamera","ShaderMaterial","TubeGeometry","use","RoundLineGeometry","initPostEffects","fragmentShader","vertexShader","flyLinePoints","groundLinePoints","targetProgresspoints","InspectionObject","Inspection","gobal","Map","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","viewElement","document","createElement","style","position","width","height","top","cursor","addEventListener","toggleView","flyLine","radius","close","groundLine","tube","mesh2","transparent","uniforms","alpha","value","centerColor","sideColor","otherColor","groundGroup","add","y","groundCurve","line","scene","anchorMesh","anchorGroup","Object","keys","forEach","key","demoPoints","getPointAt","Number","singleAnchorGroup","cylinder","color","cylinder1","name","set","x","z","anchorObject","minCamera","window","innerWidth","innerHeight","cutoutCamera","cutoutArea","layers","getLength","startMove","targetProgress","targetPosition","gotoTarget","isHide","body","appendChild","cutout","visible","model","contains","removeChild","camera","renderer","type","cutMain","check","useframe"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, RepeatWrapping, ShaderChunk, ShaderMaterial, TextureLoader, TubeGeometry, use } from '@anov/3d-core'\nimport { RoundLineGeometry, addColorifyPass, createBloomSelectedTool, createHighSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport { usePath } from '../../3d'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { flyLinePoints, groundLinePoints, targetProgresspoints } from './lineData'\nimport InspectionObject from './InspectionObject'\n\nclass Inspection {\n gobal: Factory3D\n inspectionObject\n curve\n groundCurve\n line: Group\n viewElement: HTMLDivElement\n isHide = true\n anchorObject: Map<string, Group> = new Map()\n anchorGroup: Group\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n this.hide()\n\n const viewElement = document.createElement('div')\n\n viewElement.style.position = 'absolute'\n viewElement.style.width = '200px'\n viewElement.style.height = '200px'\n viewElement.style.top = '100px'\n viewElement.style.cursor = 'pointer'\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false)\n const mesh2 = new Mesh(tube, new ShaderMaterial({\n transparent: true,\n uniforms: {\n alpha: {\n value: 0.6,\n },\n centerColor: {\n value: new Color(0xFFFFFF),\n },\n sideColor: {\n value: new Color('#F75332'),\n },\n otherColor: {\n value: new Color('#D23F22'),\n },\n },\n vertexShader,\n fragmentShader,\n }))\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh2)\n groundGroup.position.y = 3\n\n this.groundCurve = groundLine.curve\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n\n this.anchorMesh()\n }\n\n private anchorMesh() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const singleAnchorGroup = new Group()\n\n const cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({ color: new Color('#cdccca') }))\n const cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({ color: new Color('#fff') }))\n cylinder1.position.y = 2\n\n cylinder.name = 'cylinder'\n cylinder1.name = 'cylinder1'\n\n singleAnchorGroup.add(cylinder, cylinder1)\n singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z)\n\n this.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup)\n anchorGroup.add(singleAnchorGroup)\n })\n this.anchorGroup = anchorGroup\n this.gobal.scene.add(anchorGroup)\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(60,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n this.gobal.scene.cutoutArea = { x: 0, y: 0, width: 200, height: 200 }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n\n this.minCamera.layers.set(0)\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n this.isHide = false\n\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.anchorGroup.visible = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n this.isHide = true\n\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n if (this.gobal.scene.camera === this.minCamera) {\n this.gobal.scene.camera = this.gobal.scene.cutoutCamera\n this.gobal.scene.cutoutCamera = this.minCamera\n\n initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {\n type: 'sub',\n })\n }\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n this.anchorGroup.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":"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"}
|
package/dist/factory/unit/poi.js
CHANGED
|
@@ -10,6 +10,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
|
|
|
10
10
|
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); }
|
|
11
11
|
import { Vector3, utils } from '@anov/3d-core';
|
|
12
12
|
import { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability';
|
|
13
|
+
import { usePath } from "../3d";
|
|
13
14
|
import { regionMap } from "../regionData";
|
|
14
15
|
var PoiManage = /*#__PURE__*/function () {
|
|
15
16
|
function PoiManage(gobal) {
|
|
@@ -111,7 +112,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
111
112
|
var dom = document.createElement('div');
|
|
112
113
|
Object.assign(dom.style, {
|
|
113
114
|
fontSize: '18px',
|
|
114
|
-
backgroundImage:
|
|
115
|
+
backgroundImage: "url(".concat(usePath, "poi2.png)"),
|
|
115
116
|
backgroundSize: '100% 100%',
|
|
116
117
|
backgroundRepeat: 'no-repeat',
|
|
117
118
|
display: 'flex',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Vector3","utils","Css2DPoi","EAnimationType","SpritePoi","regionMap","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","poiMesh","set","id","changeWallState","show","dialogPoi","visible","wallMesh","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","width","title","length","padding","fontWeight","innerText","remove","removeFromParent","f","clear","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Vector3, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n async generatePoi() {\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: [80, 80, 1],\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n }],\n }\n const sprite = new SpritePoi(this.getDom(region), option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n }\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: 'url(./poi2.png)',\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: '262px',\n width: `${data.title.length * 36}px`,\n padding: '12px 0 0 25px',\n fontWeight: 'bold',\n })\n dom.innerText = data.title\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Vector3","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","poiMesh","set","id","changeWallState","show","dialogPoi","visible","wallMesh","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","width","title","length","padding","fontWeight","innerText","remove","removeFromParent","f","clear","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Vector3, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { usePath } from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n async generatePoi() {\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: [80, 80, 1],\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n }],\n }\n const sprite = new SpritePoi(this.getDom(region), option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n }\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: `url(${usePath}poi2.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: '262px',\n width: `${data.title.length * 36}px`,\n padding: '12px 0 0 25px',\n fontWeight: 'bold',\n })\n dom.innerText = data.title\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
|
@@ -6,6 +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 { Color, Mesh, MeshBasicMaterial, lib } from '@anov/3d-core';
|
|
9
|
+
import { loadingManager } from "../3d";
|
|
9
10
|
var FontLoader = lib.FontLoader,
|
|
10
11
|
TextGeometry = lib.TextGeometry;
|
|
11
12
|
var Font = /*#__PURE__*/function () {
|
|
@@ -19,7 +20,7 @@ var Font = /*#__PURE__*/function () {
|
|
|
19
20
|
value: function createText(text, options) {
|
|
20
21
|
var _this = this;
|
|
21
22
|
return new Promise(function (res) {
|
|
22
|
-
var loader = new FontLoader();
|
|
23
|
+
var loader = new FontLoader(loadingManager);
|
|
23
24
|
loader.load('./font.json', function (font) {
|
|
24
25
|
var _options$size;
|
|
25
26
|
_this.font = font;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Color","Mesh","MeshBasicMaterial","lib","FontLoader","TextGeometry","Font","font","text","options","Promise","res","loader","load","geometry","size","height","mesh","depthTest","color","position","copy","createFontMesh","createText"],"sources":["../../../src/factory/utils/fontMesh.ts"],"sourcesContent":["import type { Vector3 } from '@anov/3d-core'\nimport { Color, Mesh, MeshBasicMaterial, lib } from '@anov/3d-core'\n\nconst { FontLoader, TextGeometry } = lib\n\ntype FontMeshOption = {\n position: Vector3\n color?: Color\n size?: number\n rotate?: number\n}\n\nclass Font {\n font: lib.Font | null\n\n constructor() {\n this.font = null\n }\n\n createText(text: string, options: FontMeshOption) {\n return new Promise((res) => {\n const loader = new FontLoader()\n loader.load('./font.json', (font) => {\n this.font = font\n\n const geometry = new TextGeometry(text, {\n font: this.font,\n size: options.size ?? 10,\n height: 1,\n })\n\n const mesh = new Mesh(geometry, new MeshBasicMaterial({\n depthTest: true,\n color: new Color('#fff'),\n }))\n\n mesh.position.copy(options.position)\n res(mesh)\n })\n })\n }\n}\n\nconst font = new Font()\n\nconst createFontMesh = (text: string, options: FontMeshOption) => {\n return font.createText(text, options) as Promise<Mesh>\n}\n\nexport default createFontMesh\n"],"mappings":";;;;;;;AACA,SAASA,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,GAAG,QAAQ,eAAe;
|
|
1
|
+
{"version":3,"names":["Color","Mesh","MeshBasicMaterial","lib","loadingManager","FontLoader","TextGeometry","Font","font","text","options","Promise","res","loader","load","geometry","size","height","mesh","depthTest","color","position","copy","createFontMesh","createText"],"sources":["../../../src/factory/utils/fontMesh.ts"],"sourcesContent":["import type { Vector3 } from '@anov/3d-core'\nimport { Color, Mesh, MeshBasicMaterial, lib } from '@anov/3d-core'\nimport { loadingManager } from '../3d'\n\nconst { FontLoader, TextGeometry } = lib\n\ntype FontMeshOption = {\n position: Vector3\n color?: Color\n size?: number\n rotate?: number\n}\n\nclass Font {\n font: lib.Font | null\n\n constructor() {\n this.font = null\n }\n\n createText(text: string, options: FontMeshOption) {\n return new Promise((res) => {\n const loader = new FontLoader(loadingManager)\n loader.load('./font.json', (font) => {\n this.font = font\n\n const geometry = new TextGeometry(text, {\n font: this.font,\n size: options.size ?? 10,\n height: 1,\n })\n\n const mesh = new Mesh(geometry, new MeshBasicMaterial({\n depthTest: true,\n color: new Color('#fff'),\n }))\n\n mesh.position.copy(options.position)\n res(mesh)\n })\n })\n }\n}\n\nconst font = new Font()\n\nconst createFontMesh = (text: string, options: FontMeshOption) => {\n return font.createText(text, options) as Promise<Mesh>\n}\n\nexport default createFontMesh\n"],"mappings":";;;;;;;AACA,SAASA,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,GAAG,QAAQ,eAAe;AACnE,SAASC,cAAc;AAEvB,IAAQC,UAAU,GAAmBF,GAAG,CAAhCE,UAAU;EAAEC,YAAY,GAAKH,GAAG,CAApBG,YAAY;AAAQ,IASlCC,IAAI;EAGR,gBAAc;IAAA;IAAA;IACZ,IAAI,CAACC,IAAI,GAAG,IAAI;EAClB;EAAC;IAAA;IAAA,OAED,oBAAWC,IAAY,EAAEC,OAAuB,EAAE;MAAA;MAChD,OAAO,IAAIC,OAAO,CAAC,UAACC,GAAG,EAAK;QAC1B,IAAMC,MAAM,GAAG,IAAIR,UAAU,CAACD,cAAc,CAAC;QAC7CS,MAAM,CAACC,IAAI,CAAC,aAAa,EAAE,UAACN,IAAI,EAAK;UAAA;UACnC,KAAI,CAACA,IAAI,GAAGA,IAAI;UAEhB,IAAMO,QAAQ,GAAG,IAAIT,YAAY,CAACG,IAAI,EAAE;YACtCD,IAAI,EAAE,KAAI,CAACA,IAAI;YACfQ,IAAI,mBAAEN,OAAO,CAACM,IAAI,yDAAI,EAAE;YACxBC,MAAM,EAAE;UACV,CAAC,CAAC;UAEF,IAAMC,IAAI,GAAG,IAAIjB,IAAI,CAACc,QAAQ,EAAE,IAAIb,iBAAiB,CAAC;YACpDiB,SAAS,EAAE,IAAI;YACfC,KAAK,EAAE,IAAIpB,KAAK,CAAC,MAAM;UACzB,CAAC,CAAC,CAAC;UAEHkB,IAAI,CAACG,QAAQ,CAACC,IAAI,CAACZ,OAAO,CAACW,QAAQ,CAAC;UACpCT,GAAG,CAACM,IAAI,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,IAAMV,IAAI,GAAG,IAAID,IAAI,EAAE;AAEvB,IAAMgB,cAAc,GAAG,SAAjBA,cAAc,CAAId,IAAY,EAAEC,OAAuB,EAAK;EAChE,OAAOF,IAAI,CAACgB,UAAU,CAACf,IAAI,EAAEC,OAAO,CAAC;AACvC,CAAC;AAED,eAAea,cAAc"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anov/3d",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.39",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"anov-heat-map": "^0.0.1",
|
|
22
22
|
"localforage": "^1.10.0",
|
|
23
23
|
"uuid": "^9.0.1",
|
|
24
|
-
"@anov/3d-
|
|
25
|
-
"@anov/3d-
|
|
24
|
+
"@anov/3d-core": "^0.0.11",
|
|
25
|
+
"@anov/3d-ability": "^0.0.13"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/uuid": "^9.0.7"
|