@anov/3d 0.0.89 → 0.0.91

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.
@@ -1 +1 @@
1
- {"version":3,"names":["AudioListener","AudioLoader","Clock","Color","EdgesGeometry","Euler","Group","LineBasicMaterial","LineCurve3","LineSegments","MathUtils","Matrix4","Mesh","MeshBasicMaterial","MirroredRepeatWrapping","ModelLoader","PositionalAudio","Quaternion","RepeatWrapping","TextureLoader","Vector3","use","utils","SpritePoi","Tween","createFinirMaterial","usePath","MessageType","sendToMessage","EMessageStatus","isCheck","targetProgresspoints","TubeGeometryV2","modelLoader","InspectionObject","inspection","targetQuaternion","mesh","cb","clock","quaternion","equals","animation","useframe","delta","getDelta","step","rotateTowards","temp","load","wrapS","wrapT","repeat","set","rotation","Math","PI","loadGLTF","glb","div","document","createElement","style","position","img","src","span","innerText","top","left","transform","color","fontSize","fontWeight","appendChild","poi","width","height","img2","poi2","scale","fly1","scene","getObjectByName","fly2","fly3","fly4","copy","clone","add","z","getSportsProgress","isLock","stop","checkAnimation","group","minCamera","y","rotateY","model","gobal","interactionManager","visible","addEventListener","traverse","child","layers","enable","handleMouseMove","listener","camera","posAudio","audioLoader","startAudio","context","state","resume","audioBuffer","setBuffer","setVolume","setRefDistance","setLoop","play","removeEventListener","curve","loadModel","control","moveWithLine","groundCurve","getPointAt","setTimeout","groundMaterial","uniforms","u_time","value","mapMaterial","updateMatrixWorld","worldQuaternion","getWorldQuaternion","worldEuler","setFromQuaternion","rotationY","rotationYInDegrees","round","radToDeg","Event","Success","undefined","rotate","abs","degree","distance","getLength","verticalSpeed","horizontalSpeed","percentage","getProgress","targetMesh","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","currentAnchor","anchorObject","get","name","material","rotationMatrix","startQuaternion","targetMeshPosition","Number","up","setFromRotationMatrix","forwardTween","t","to","onUpdate","obj","slerp","backwardTween","onComplete","finirMesh","finirMaterialV2","type","lineSegments","geometry","subscription","then","start","off","currentPosition","tube","tempPathMesh","map","transparent","depthTest","tempDemo","offset","x","dispose","removeFromParent","targetProgress","startRotate","tempPathMeshtargetPosition","generateTempPathMesh","generateTempPath","upCurve","upControl","loop","lookat","tempCurve","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","cleanTempPathMesh","setProgress","contine","speed","setSpeed","loadPosAudio","emit"],"sources":["../../../../src/factory/unit/inspection/InspectionObject.ts"],"sourcesContent":["import type { Camera, Curve } from '@anov/3d-core'\nimport { AudioListener, AudioLoader, BoxGeometry, Clock, Color, EdgesGeometry, Euler, Group, LineBasicMaterial, LineCurve3, LineSegments, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, ModelLoader, PositionalAudio, Quaternion, RepeatWrapping, ShaderChunk, ShaderMaterial, TextureLoader, TubeGeometry, Vector3, use, utils } from '@anov/3d-core'\nimport type { Css2DPoi } from '@anov/3d-ability'\nimport { 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'\nimport TubeGeometryV2 from './tubeGeometry'\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 tempPathMesh\n css2d: Css2DPoi\n temp\n tempDemo\n\n constructor(inspection) {\n this.inspection = inspection\n\n const temp = new TextureLoader().load(`${usePath}test07.png`)\n temp.wrapS = RepeatWrapping\n temp.wrapT = MirroredRepeatWrapping\n temp.repeat.set(1, 2)\n temp.rotation = Math.PI\n\n this.temp = temp\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\n const poi2 = new SpritePoi(img2, {\n width: 400 * 2,\n height: 160 * 2,\n })\n\n poi.scale.set(100, 40, 1)\n poi2.scale.set(400, 160, 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 poi2.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 -= 15\n this.inspection.minCamera.position.y += 4\n this.inspection.minCamera.rotateY(Math.PI)\n\n this.model = group\n\n this.inspection.gobal.interactionManager.add(poi)\n this.inspection.gobal.interactionManager.add(poi2)\n\n poi2.visible = false\n\n poi.addEventListener('click', () => {\n group.add(poi2)\n poi2.visible = true\n poi.visible = false\n })\n\n poi2.addEventListener('click', () => {\n group.add(poi2)\n poi.visible = true\n poi2.visible = false\n })\n\n glb.scene.scale.set(5, 5, 5)\n glb.scene.traverse((child) => {\n child.layers.enable(2)\n child.layers.enable(5)\n })\n\n this.inspection.gobal.scene.add(this.model)\n }\n\n private loadPosAudio() {\n const handleMouseMove = () => {\n const listener = new AudioListener()\n this.inspection.gobal.scene.camera.add(listener)\n\n const posAudio = new PositionalAudio(listener)\n this.model.add(posAudio)\n\n const audioLoader = new AudioLoader()\n\n const startAudio = async () => {\n if (listener.context.state === 'suspended')\n await listener.context.resume()\n\n audioLoader.load(`${usePath}demo.mp3`, (audioBuffer) => {\n posAudio.setBuffer(audioBuffer)\n posAudio.setVolume(0.8)\n posAudio.setRefDistance(200)\n posAudio.setLoop(true)\n posAudio.play()\n })\n }\n\n startAudio()\n\n document.removeEventListener('mousemove', handleMouseMove)\n }\n\n document.addEventListener('mousemove', handleMouseMove)\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 this.model.position.copy(curve.getPointAt(0))\n\n setTimeout(() => {\n this.stop()\n }, 20)\n\n use.useframe(() => {\n this.inspection.groundMaterial.uniforms.u_time.value = this.getSportsProgress - 0.01\n this.inspection.mapMaterial.uniforms.u_time.value = this.getSportsProgress - 0.01\n\n const mesh = this.model\n mesh.updateMatrixWorld(true)\n\n const worldQuaternion = new Quaternion()\n mesh.getWorldQuaternion(worldQuaternion)\n\n const worldEuler = new Euler().setFromQuaternion(worldQuaternion, 'YXZ')\n const rotationY = worldEuler.y\n const rotationYInDegrees = Math.round(MathUtils.radToDeg(rotationY))\n\n sendToMessage(MessageType.Event, 'onCompassInfo', EMessageStatus.Success, undefined, {\n rotate: rotationYInDegrees >= 0 ? 180 - rotationYInDegrees : -180 + Math.abs(rotationYInDegrees),\n degree: rotationYInDegrees >= 0 ? 180 - rotationYInDegrees : -180 + Math.abs(rotationYInDegrees) + 360,\n distance: this.getSportsProgress * this.inspection.curve.getLength(),\n verticalSpeed: 0,\n horizontalSpeed: 10,\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 const targetMeshPosition = targetMesh.position.clone()\n targetMeshPosition.y = targetMeshPosition.y + ((Number(key) === 0.04 || Number(key) === 0.68 || Number(key) === 0.40) ? 20 : 0)\n\n rotationMatrix.lookAt(targetMeshPosition, 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 || Number(key) === 0.40)\n (this.inspection.minCamera as Camera).layers.set(2)\n\n if (Number(key) === 0.15 || Number(key) === 0.24) {\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 // 异常点\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 || Number(key) === 0.40)\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 private generateTempPathMesh(curve: Curve<Vector3>) {\n // @ts-ignore\n const tube = new TubeGeometryV2(curve, 100, 5, 2, false)\n const tempPathMesh = new Mesh(tube, new MeshBasicMaterial({ map: this.temp, transparent: true, depthTest: true }))\n\n this.inspection.gobal.scene.add(tempPathMesh)\n this.tempPathMesh = tempPathMesh\n\n tempPathMesh.layers.enable(5)\n\n this.temp.repeat.set(curve.getLength() / 500, 2)\n this.tempDemo = use.useframe(() => {\n this.temp.offset.x -= -0.0009\n })\n }\n\n private cleanTempPathMesh() {\n if (this.tempPathMesh) {\n this.tempDemo()\n this.tempPathMesh.geometry.dispose()\n this.tempPathMesh.material.dispose();\n (this.tempPathMesh as Mesh).removeFromParent()\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 tempPathMeshtargetPosition = new Vector3(targetPosition.x, 1.1, targetPosition.z)\n this.generateTempPathMesh(this.generateTempPath(new Vector3(this.model.position.x, 1.1, this.model.position.z), tempPathMeshtargetPosition))\n\n const currentPosition = this.model.position\n const upCurve = new LineCurve3(currentPosition, new Vector3(currentPosition.x, currentPosition.y + 50, currentPosition.z))\n const upControl = utils.moveWithLine(this.model, upCurve, 10, { loop: false, lookat: targetPosition })\n\n // up end\n upControl.addEventListener('end', () => {\n const tempCurve = this.generateTempPath(currentPosition, new Vector3(targetPosition.x, targetPosition.y + 50, targetPosition.z))\n const tempControl = utils.moveWithLine(this.model, tempCurve, 60, { loop: false, lookat: false })\n\n // temp end\n tempControl.addEventListener('end', () => {\n const lastPosition = this.model.position\n const downCurve = new LineCurve3(lastPosition, new Vector3(lastPosition.x, lastPosition.y - 50, lastPosition.z))\n const downControl = utils.moveWithLine(this.model, downCurve, 10, { loop: false, lookat: false })\n\n // down end\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.cleanTempPathMesh()\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 this.loadPosAudio()\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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"}
1
+ {"version":3,"names":["AudioListener","AudioLoader","Clock","Color","EdgesGeometry","Euler","Group","LineBasicMaterial","LineCurve3","LineSegments","MathUtils","Matrix4","Mesh","MeshBasicMaterial","MirroredRepeatWrapping","ModelLoader","PlaneGeometry","PositionalAudio","Quaternion","RepeatWrapping","TextureLoader","Vector3","use","utils","SpritePoi","Tween","createFinirMaterial","usePath","MessageType","sendToMessage","EMessageStatus","isCheck","targetProgresspoints","TubeGeometryV2","modelLoader","InspectionObject","inspection","targetQuaternion","mesh","cb","clock","quaternion","equals","animation","useframe","delta","getDelta","step","rotateTowards","temp","load","wrapS","wrapT","repeat","set","rotation","Math","PI","loadGLTF","glb","div","document","createElement","style","position","img","src","span","innerText","top","left","transform","color","fontSize","fontWeight","appendChild","poi","width","height","img2","poi2","scale","fly1","scene","getObjectByName","fly2","fly3","fly4","planeGeometry","planeMaterial","map","transparent","plyMap","x","copy","layers","group","name","add","minCamera","clone","z","getSportsProgress","isLock","stop","checkAnimation","y","rotateY","initialMinCameraQuaternion","model","gobal","interactionManager","visible","addEventListener","traverse","child","enable","loadPosAudio","breathinglamp","target","startColor","endColor","breathingSpeed","elapsedTime","getElapsedTime","t","sin","currentColor","lerp","material","handleMouseMove","listener","posAudio","audioLoader","audioBuffer","setBuffer","setVolume","setRefDistance","setLoop","emitter","on","isStartUp","play","removeEventListener","curve","loadModel","control","moveWithLine","groundCurve","getPointAt","setTimeout","sendCompassInfo","groundMaterial","uniforms","u_time","value","mapMaterial","mapAnchorObject","forEach","mapAnchor","uColor","Event","Success","undefined","percentage","setInterval","updateMatrixWorld","worldQuaternion","getWorldQuaternion","worldEuler","setFromQuaternion","rotationY","rotationYInDegrees","round","radToDeg","rotate","abs","degree","distance","getLength","verticalSpeed","horizontalSpeed","getProgress","Promise","resolve","data","progress","isAnimation","defaultFirstPerspectiveControls","enabled","key","Object","keys","find","p","num","parseFloat","targetMeshId","lookAt","targetMesh","pipeline","realModl","contineMove","currentAnchor","anchorObject","get","currentMapAnchor","numberKey","Number","rotationMatrix","startQuaternion","startCameraQuaternion","targetMeshPosition","up","setFromRotationMatrix","forwardTween","to","onUpdate","obj","slerp","backwardTween","onComplete","finirMesh","finirMaterialV2","type","lineSegments","geometry","subscription","then","start","off","currentPosition","targetPosition","tube","tempPathMesh","depthTest","tempDemo","offset","dispose","removeFromParent","targetProgress","startRotate","tempPathMeshtargetPosition","generateTempPathMesh","generateTempPath","upCurve","upControl","loop","lookat","tempCurve","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","cleanTempPathMesh","setProgress","contine","speed","setSpeed","emit","camera"],"sources":["../../../../src/factory/unit/inspection/InspectionObject.ts"],"sourcesContent":["import type { Camera, Curve } from '@anov/3d-core'\nimport { AudioListener, AudioLoader, BoxGeometry, Clock, Color, EdgesGeometry, Euler, Group, LineBasicMaterial, LineCurve3, LineSegments, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MeshStandardMaterial, MirroredRepeatWrapping, ModelLoader, PlaneGeometry, PointLight, PositionalAudio, Quaternion, RepeatWrapping, ShaderChunk, ShaderMaterial, Sprite, SpriteMaterial, TextureLoader, TubeGeometry, Vector3, Vector4, use, utils } from '@anov/3d-core'\nimport type { Css2DPoi } from '@anov/3d-ability'\nimport { 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 { isCheck, targetProgresspoints } from './lineData'\nimport TubeGeometryV2 from './tubeGeometry'\n\nconst modelLoader = new ModelLoader()\n\nclass InspectionObject {\n model\n private inspection\n private control\n private isLock = false\n private isAnimation = false\n walkCurveMesh\n tempPathMesh\n css2d: Css2DPoi\n temp\n tempDemo\n isStartUp = false\n initialMinCameraQuaternion\n\n constructor(inspection) {\n this.inspection = inspection\n\n const temp = new TextureLoader().load(`${usePath}test07.png`)\n temp.wrapS = RepeatWrapping\n temp.wrapT = MirroredRepeatWrapping\n temp.repeat.set(1, 2)\n temp.rotation = Math.PI\n\n this.temp = temp\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\n const poi2 = new SpritePoi(img2, {\n width: 400 * 2,\n height: 160 * 2,\n })\n\n poi.scale.set(100, 40, 1)\n poi2.scale.set(400, 160, 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 const planeGeometry = new PlaneGeometry(50, 50)\n const planeMaterial = new MeshBasicMaterial({ map: new TextureLoader().load(`${usePath}fly.png`), transparent: true })\n const plyMap = new Mesh(planeGeometry, planeMaterial)\n\n plyMap.rotation.x = -Math.PI / 2\n plyMap.position.copy(glb.scene.position)\n plyMap.layers.set(5)\n\n const group = new Group()\n glb.scene.name = 'ply'\n group.add(glb.scene)\n group.add(poi)\n group.add(plyMap)\n group.add(this.inspection.minCamera)\n\n use.useframe(() => {\n poi.position.copy(glb.scene.position.clone().add(new Vector3(0, 10, 0)))\n poi2.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 this.inspection.minCamera.position.copy(glb.scene.position)\n this.inspection.minCamera.position.z -= 18\n this.inspection.minCamera.position.y += 4\n this.inspection.minCamera.rotateY(Math.PI)\n this.initialMinCameraQuaternion = this.inspection.minCamera.quaternion.clone()\n\n this.model = group\n\n this.inspection.gobal.interactionManager.add(poi)\n this.inspection.gobal.interactionManager.add(poi2)\n\n poi2.visible = false\n\n poi.addEventListener('click', () => {\n group.add(poi2)\n poi2.visible = true\n poi.visible = false\n })\n\n poi2.addEventListener('click', () => {\n group.add(poi2)\n poi.visible = true\n poi2.visible = false\n })\n\n glb.scene.scale.set(5, 5, 5)\n glb.scene.traverse((child) => {\n child.layers.enable(2)\n child.layers.enable(5)\n })\n\n this.inspection.gobal.scene.add(this.model)\n\n this.loadPosAudio()\n this.breathinglamp(this.model)\n }\n\n private breathinglamp(model: Group) {\n const target = model.getObjectByName('网格004_5')\n\n const startColor = new Color('#999')\n const endColor = new Color('#2df3ee')\n\n const clock = new Clock()\n const breathingSpeed = 1\n\n use.useframe(() => {\n const elapsedTime = clock.getElapsedTime()\n const t = (Math.sin(elapsedTime * Math.PI * breathingSpeed) + 1) / 2\n const currentColor = startColor.clone().lerp(endColor, t)\n\n // @ts-ignore\n target.material.color.set(currentColor)\n })\n\n // model.add(light)\n }\n\n private loadPosAudio() {\n const handleMouseMove = () => {\n const listener = new AudioListener()\n this.inspection.minCamera.add(listener)\n\n const posAudio = new PositionalAudio(listener)\n this.model.add(posAudio)\n\n const audioLoader = new AudioLoader()\n\n audioLoader.load(`${usePath}demo.mp3`, (audioBuffer) => {\n posAudio.setBuffer(audioBuffer)\n posAudio.setVolume(0.8)\n posAudio.setRefDistance(200)\n posAudio.setLoop(true)\n })\n\n utils.emitter.on('play', () => {\n this.isStartUp && posAudio.play()\n })\n\n utils.emitter.on('stop', () => {\n posAudio.stop()\n })\n\n document.removeEventListener('mousemove', handleMouseMove)\n }\n\n document.addEventListener('mousemove', handleMouseMove)\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 this.model.position.copy(curve.getPointAt(0))\n\n setTimeout(() => {\n this.stop()\n }, 20)\n\n this.sendCompassInfo()\n\n use.useframe(() => {\n this.inspection.groundMaterial.uniforms.u_time.value = this.getSportsProgress - 0.01\n this.inspection.mapMaterial.uniforms.u_time.value = this.getSportsProgress - 0.01\n\n if (this.getSportsProgress > 0 && this.getSportsProgress < 0.01) {\n this.inspection.mapAnchorObject.forEach((mapAnchor) => {\n mapAnchor.material.uniforms.uColor.value.set(1, 1, 1, 1)\n })\n }\n\n sendToMessage(MessageType.Event, 'onInspectProgress', EMessageStatus.Success, undefined, {\n percentage: this.getSportsProgress,\n })\n })\n }\n\n /**\n * send compass info\n * not use useframe, because useframe will be lose some frame\n */\n private sendCompassInfo() {\n setInterval(() => {\n const mesh = this.model\n mesh.updateMatrixWorld(true)\n\n const worldQuaternion = new Quaternion()\n mesh.getWorldQuaternion(worldQuaternion)\n\n const worldEuler = new Euler().setFromQuaternion(worldQuaternion, 'YXZ')\n const rotationY = worldEuler.y\n const rotationYInDegrees = Math.round(MathUtils.radToDeg(rotationY))\n\n sendToMessage(MessageType.Event, 'onCompassInfo', EMessageStatus.Success, undefined, {\n rotate: rotationYInDegrees >= 0 ? 180 - rotationYInDegrees : -180 + Math.abs(rotationYInDegrees),\n degree: rotationYInDegrees >= 0 ? 180 - rotationYInDegrees : -180 + Math.abs(rotationYInDegrees) + 360,\n distance: this.getSportsProgress * this.inspection.curve.getLength(),\n verticalSpeed: 0,\n horizontalSpeed: 10,\n })\n }, 100)\n }\n\n get getSportsProgress() {\n if (!this.control)\n return 0\n\n return this.control.getProgress()\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 this.inspection.defaultFirstPerspectiveControls.enabled = false\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 const currentMapAnchor = this.inspection.mapAnchorObject\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 (currentMapAnchor as Map<string, Mesh>).forEach((mapAnchor, key) => {\n const numberKey = Number(key)\n\n // @ts-ignore\n this.getSportsProgress > numberKey && mapAnchor.material.uniforms.uColor.value.set(1, 0, 0, 0.8)\n\n // @ts-ignore\n this.getSportsProgress < numberKey && mapAnchor.material.uniforms.uColor.value.set(1, 1, 1, 1)\n })\n\n setTimeout(() => {\n const rotationMatrix = new Matrix4()\n const targetQuaternion = new Quaternion()\n const startQuaternion = this.model.quaternion.clone()\n const startCameraQuaternion = this.inspection.minCamera.quaternion.clone()\n\n const targetMeshPosition = targetMesh.position.clone()\n targetMeshPosition.y = targetMeshPosition.y + ((Number(key) === 0.04 || Number(key) === 0.68 || Number(key) === 0.40) ? 20 : 0)\n\n rotationMatrix.lookAt(targetMeshPosition, 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 this.inspection.minCamera.quaternion.copy(startCameraQuaternion).slerp(this.initialMinCameraQuaternion, 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 || Number(key) === 0.40)\n (this.inspection.minCamera as Camera).layers.set(2)\n\n if (Number(key) === 0.15 || Number(key) === 0.24) {\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('#08A6E3', 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 // 异常点\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 || Number(key) === 0.40)\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.inspection.defaultFirstPerspectiveControls.enabled = true\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 private generateTempPathMesh(curve: Curve<Vector3>) {\n // @ts-ignore\n const tube = new TubeGeometryV2(curve, 100, 5, 2, false)\n const tempPathMesh = new Mesh(tube, new MeshBasicMaterial({ map: this.temp, transparent: true, depthTest: true }))\n\n this.inspection.gobal.scene.add(tempPathMesh)\n this.tempPathMesh = tempPathMesh\n\n tempPathMesh.layers.enable(5)\n\n this.temp.repeat.set(curve.getLength() / 500, 2)\n this.tempDemo = use.useframe(() => {\n this.temp.offset.x -= -0.0009\n })\n }\n\n private cleanTempPathMesh() {\n if (this.tempPathMesh) {\n this.tempDemo()\n this.tempPathMesh.geometry.dispose()\n this.tempPathMesh.material.dispose();\n (this.tempPathMesh as Mesh).removeFromParent()\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 tempPathMeshtargetPosition = new Vector3(targetPosition.x, 1.1, targetPosition.z)\n this.generateTempPathMesh(this.generateTempPath(new Vector3(this.model.position.x, 1.1, this.model.position.z), tempPathMeshtargetPosition))\n\n const currentPosition = this.model.position\n const upCurve = new LineCurve3(currentPosition, new Vector3(currentPosition.x, currentPosition.y + 50, currentPosition.z))\n const upControl = utils.moveWithLine(this.model, upCurve, 10, { loop: false, lookat: targetPosition })\n\n // up end\n upControl.addEventListener('end', () => {\n const tempCurve = this.generateTempPath(currentPosition, new Vector3(targetPosition.x, targetPosition.y + 50, targetPosition.z))\n const tempControl = utils.moveWithLine(this.model, tempCurve, 60, { loop: false, lookat: false })\n\n // temp end\n tempControl.addEventListener('end', () => {\n const lastPosition = this.model.position\n const downCurve = new LineCurve3(lastPosition, new Vector3(lastPosition.x, lastPosition.y - 50, lastPosition.z))\n const downControl = utils.moveWithLine(this.model, downCurve, 10, { loop: false, lookat: false })\n\n // down end\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.cleanTempPathMesh()\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 this.isStartUp = true\n\n utils.emitter.emit('continue', true)\n\n if (this.inspection.minCamera === this.inspection.gobal.scene.camera)\n utils.emitter.emit('play')\n }\n\n /**\n * todo: now temporarily not implemented\n */\n dispose() { }\n}\n\nexport default InspectionObject"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { EventDispatcher } from '@anov/3d-core';
2
+ declare class defaultFirstPerspectiveControls extends EventDispatcher {
3
+ enabled: boolean;
4
+ constructor(object: any, domElement: any);
5
+ }
6
+ export default defaultFirstPerspectiveControls;
@@ -0,0 +1,382 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
3
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
6
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
7
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
8
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
9
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
10
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
11
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12
+ 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; }
13
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
+ 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); }
15
+ /* eslint-disable @typescript-eslint/no-this-alias */
16
+ /* eslint-disable @typescript-eslint/no-use-before-define */
17
+ // @ts-nocheck
18
+
19
+ import { EventDispatcher, MOUSE, Object3D, Spherical, TOUCH, Vector2, Vector3 } from '@anov/3d-core';
20
+ var _startEvent = {
21
+ type: 'start'
22
+ };
23
+ var _endEvent = {
24
+ type: 'end'
25
+ };
26
+ var defaultFirstPerspectiveControls = /*#__PURE__*/function (_EventDispatcher) {
27
+ _inherits(defaultFirstPerspectiveControls, _EventDispatcher);
28
+ var _super = _createSuper(defaultFirstPerspectiveControls);
29
+ function defaultFirstPerspectiveControls(object, domElement) {
30
+ var _this;
31
+ _classCallCheck(this, defaultFirstPerspectiveControls);
32
+ _this = _super.call(this);
33
+ _defineProperty(_assertThisInitialized(_this), "enabled", true);
34
+ _this.object = object;
35
+ _this.domElement = domElement;
36
+ _this.domElement.style.touchAction = 'none'; // disable touch scroll
37
+
38
+ // Set to false to disable this control
39
+ _this.enabled = true;
40
+
41
+ // "target" sets the location of focus, where the object orbits around
42
+ _this.target = new Vector3();
43
+
44
+ // Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect
45
+ _this.cursor = new Vector3();
46
+
47
+ // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
48
+ // Set to false to disable zooming
49
+ _this.enableZoom = true;
50
+ _this.zoomSpeed = 1.0;
51
+
52
+ // Set to false to disable rotating
53
+ _this.enableRotate = true;
54
+ _this.rotateSpeed = 0.5;
55
+
56
+ // Set to false to disable panning
57
+ _this.enablePan = true;
58
+ _this.panSpeed = 1.0;
59
+ _this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
60
+ _this.keyPanSpeed = 7.0; // pixels moved per arrow key push
61
+ _this.zoomToCursor = false;
62
+
63
+ // Set to true to automatically rotate around the target
64
+ // If auto-rotate is enabled, you must call controls.update() in your animation loop
65
+ _this.autoRotate = false;
66
+ _this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60
67
+
68
+ // The four arrow keys
69
+ _this.keys = {
70
+ LEFT: 'ArrowLeft',
71
+ UP: 'ArrowUp',
72
+ RIGHT: 'ArrowRight',
73
+ BOTTOM: 'ArrowDown'
74
+ };
75
+
76
+ // Mouse buttons
77
+ _this.mouseButtons = {
78
+ LEFT: MOUSE.ROTATE,
79
+ MIDDLE: MOUSE.DOLLY,
80
+ RIGHT: MOUSE.PAN
81
+ };
82
+
83
+ // Touch fingers
84
+ _this.touches = {
85
+ ONE: TOUCH.ROTATE,
86
+ TWO: TOUCH.DOLLY_PAN
87
+ };
88
+
89
+ // for reset
90
+ _this.target0 = _this.target.clone();
91
+ // this.position0 = this.object.position.clone()
92
+ // this.zoom0 = this.object.zoom
93
+
94
+ _this._domElementKeyEvents = null;
95
+ _this.getPolarAngle = function () {
96
+ return spherical.phi;
97
+ };
98
+ _this.getAzimuthalAngle = function () {
99
+ return spherical.theta;
100
+ };
101
+ _this.getDistance = function () {
102
+ // return this.object.position.distanceTo(this.target)
103
+ };
104
+ _this.saveState = function () {
105
+ scope.target0.copy(scope.target);
106
+ scope.position0.copy(scope.object.position);
107
+ };
108
+ _this.reset = function () {};
109
+ _this.dispose = function () {
110
+ scope.domElement.removeEventListener('contextmenu', onContextMenu);
111
+ scope.domElement.removeEventListener('pointerdown', onPointerDown);
112
+ scope.domElement.removeEventListener('pointercancel', onPointerUp);
113
+ scope.domElement.removeEventListener('pointermove', onPointerMove);
114
+ scope.domElement.removeEventListener('pointerup', onPointerUp);
115
+ if (scope._domElementKeyEvents !== null) {
116
+ scope._domElementKeyEvents.removeEventListener('keydown', onKeyDown);
117
+ scope._domElementKeyEvents = null;
118
+ }
119
+ };
120
+ var scope = _assertThisInitialized(_this);
121
+ var STATE = {
122
+ NONE: -1,
123
+ ROTATE: 0,
124
+ DOLLY: 1,
125
+ PAN: 2,
126
+ TOUCH_ROTATE: 3,
127
+ TOUCH_PAN: 4,
128
+ TOUCH_DOLLY_PAN: 5,
129
+ TOUCH_DOLLY_ROTATE: 6
130
+ };
131
+ var state = STATE.NONE;
132
+ var spherical = new Spherical();
133
+ var rotateStart = new Vector2();
134
+ var rotateEnd = new Vector2();
135
+ var rotateDelta = new Vector2();
136
+ var panStart = new Vector2();
137
+ var dollyStart = new Vector2();
138
+ var dollyDirection = new Vector3();
139
+ var mouse = new Vector2();
140
+ var pointers = [];
141
+ var pointerPositions = {};
142
+ function updateZoomParameters(x, y) {
143
+ if (!scope.zoomToCursor) return;
144
+ performCursorZoom = true;
145
+ var rect = scope.domElement.getBoundingClientRect();
146
+ var dx = x - rect.left;
147
+ var dy = y - rect.top;
148
+ var w = rect.width;
149
+ var h = rect.height;
150
+ mouse.x = dx / w * 2 - 1;
151
+ mouse.y = -(dy / h) * 2 + 1;
152
+ dollyDirection.set(mouse.x, mouse.y, 1).unproject(scope.object).sub(scope.object.position).normalize();
153
+ }
154
+ function handleMouseDownRotate(event) {
155
+ rotateStart.set(event.clientX, event.clientY);
156
+ }
157
+ function handleMouseDownDolly(event) {
158
+ updateZoomParameters(event.clientX, event.clientX);
159
+ dollyStart.set(event.clientX, event.clientY);
160
+ }
161
+ function handleMouseDownPan(event) {
162
+ panStart.set(event.clientX, event.clientY);
163
+ }
164
+ function handleMouseMoveRotate(event) {
165
+ rotateEnd.set(event.clientX, event.clientY);
166
+ rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
167
+ var element = scope.domElement;
168
+ var rotateLeft = 2 * Math.PI * rotateDelta.x / element.clientHeight;
169
+ var rotateTop = 2 * Math.PI * rotateDelta.y / element.clientHeight;
170
+ var helper = new Object3D();
171
+ function resetZRotation(obj) {
172
+ obj.rotation.z = Math.PI;
173
+ }
174
+ function rotateObject(object, rotateLeft, rotateTop) {
175
+ helper.rotation.copy(object.rotation);
176
+ resetZRotation(helper);
177
+ helper.rotateY(-rotateLeft);
178
+ resetZRotation(helper);
179
+ helper.rotateX(-rotateTop);
180
+ resetZRotation(helper);
181
+ object.rotation.copy(helper.rotation);
182
+ }
183
+ rotateObject(scope.object, rotateLeft, rotateTop);
184
+ rotateStart.copy(rotateEnd);
185
+ }
186
+ function handleTouchStartRotate(event) {
187
+ if (pointers.length === 1) {
188
+ rotateStart.set(event.pageX, event.pageY);
189
+ } else {
190
+ var position = getSecondPointerPosition(event);
191
+ var x = 0.5 * (event.pageX + position.x);
192
+ var y = 0.5 * (event.pageY + position.y);
193
+ rotateStart.set(x, y);
194
+ }
195
+ }
196
+ function handleTouchStartPan(event) {
197
+ if (pointers.length === 1) {
198
+ panStart.set(event.pageX, event.pageY);
199
+ } else {
200
+ var position = getSecondPointerPosition(event);
201
+ var x = 0.5 * (event.pageX + position.x);
202
+ var y = 0.5 * (event.pageY + position.y);
203
+ panStart.set(x, y);
204
+ }
205
+ }
206
+ function handleTouchStartDolly(event) {
207
+ var position = getSecondPointerPosition(event);
208
+ var dx = event.pageX - position.x;
209
+ var dy = event.pageY - position.y;
210
+ var distance = Math.sqrt(dx * dx + dy * dy);
211
+ dollyStart.set(0, distance);
212
+ }
213
+ function handleTouchStartDollyPan(event) {
214
+ if (scope.enableZoom) handleTouchStartDolly(event);
215
+ if (scope.enablePan) handleTouchStartPan(event);
216
+ }
217
+ function handleTouchStartDollyRotate(event) {
218
+ if (scope.enableZoom) handleTouchStartDolly(event);
219
+ if (scope.enableRotate) handleTouchStartRotate(event);
220
+ }
221
+ function onPointerDown(event) {
222
+ if (scope.enabled === false) return;
223
+ if (pointers.length === 0) {
224
+ scope.domElement.setPointerCapture(event.pointerId);
225
+ scope.domElement.addEventListener('pointermove', onPointerMove);
226
+ scope.domElement.addEventListener('pointerup', onPointerUp);
227
+ }
228
+ addPointer(event);
229
+ if (event.pointerType === 'touch') onTouchStart(event);else onMouseDown(event);
230
+ }
231
+ function onPointerMove(event) {
232
+ onMouseMove(event);
233
+ }
234
+ function onPointerUp(event) {
235
+ removePointer(event);
236
+ if (pointers.length === 0) {
237
+ scope.domElement.releasePointerCapture(event.pointerId);
238
+ scope.domElement.removeEventListener('pointermove', onPointerMove);
239
+ scope.domElement.removeEventListener('pointerup', onPointerUp);
240
+ }
241
+ scope.dispatchEvent(_endEvent);
242
+ state = STATE.NONE;
243
+ if (pointers.length === 1) {
244
+ var pointerId = pointers[0];
245
+ var position = pointerPositions[pointerId];
246
+
247
+ // minimal placeholder event - allows state correction on pointer-up
248
+ onTouchStart({
249
+ pointerId: pointerId,
250
+ pageX: position.x,
251
+ pageY: position.y
252
+ });
253
+ }
254
+ }
255
+ function onMouseDown(event) {
256
+ var mouseAction;
257
+ switch (event.button) {
258
+ case 0:
259
+ mouseAction = scope.mouseButtons.LEFT;
260
+ break;
261
+ case 1:
262
+ mouseAction = scope.mouseButtons.MIDDLE;
263
+ break;
264
+ case 2:
265
+ mouseAction = scope.mouseButtons.RIGHT;
266
+ break;
267
+ default:
268
+ mouseAction = -1;
269
+ }
270
+ switch (mouseAction) {
271
+ case MOUSE.DOLLY:
272
+ if (scope.enableZoom === false) return;
273
+ handleMouseDownDolly(event);
274
+ state = STATE.DOLLY;
275
+ break;
276
+ case MOUSE.ROTATE:
277
+ if (event.ctrlKey || event.metaKey || event.shiftKey) {
278
+ if (scope.enablePan === false) return;
279
+ handleMouseDownPan(event);
280
+ state = STATE.PAN;
281
+ } else {
282
+ if (scope.enableRotate === false) return;
283
+ handleMouseDownRotate(event);
284
+ state = STATE.ROTATE;
285
+ }
286
+ break;
287
+ case MOUSE.PAN:
288
+ if (event.ctrlKey || event.metaKey || event.shiftKey) {
289
+ if (scope.enableRotate === false) return;
290
+ handleMouseDownRotate(event);
291
+ state = STATE.ROTATE;
292
+ } else {
293
+ if (scope.enablePan === false) return;
294
+ handleMouseDownPan(event);
295
+ state = STATE.PAN;
296
+ }
297
+ break;
298
+ default:
299
+ state = STATE.NONE;
300
+ }
301
+ if (state !== STATE.NONE) scope.dispatchEvent(_startEvent);
302
+ }
303
+ function onMouseMove(event) {
304
+ handleMouseMoveRotate(event);
305
+ }
306
+ function onTouchStart(event) {
307
+ trackPointer(event);
308
+ switch (pointers.length) {
309
+ case 1:
310
+ switch (scope.touches.ONE) {
311
+ case TOUCH.ROTATE:
312
+ if (scope.enableRotate === false) return;
313
+ handleTouchStartRotate(event);
314
+ state = STATE.TOUCH_ROTATE;
315
+ break;
316
+ case TOUCH.PAN:
317
+ if (scope.enablePan === false) return;
318
+ handleTouchStartPan(event);
319
+ state = STATE.TOUCH_PAN;
320
+ break;
321
+ default:
322
+ state = STATE.NONE;
323
+ }
324
+ break;
325
+ case 2:
326
+ switch (scope.touches.TWO) {
327
+ case TOUCH.DOLLY_PAN:
328
+ if (scope.enableZoom === false && scope.enablePan === false) return;
329
+ handleTouchStartDollyPan(event);
330
+ state = STATE.TOUCH_DOLLY_PAN;
331
+ break;
332
+ case TOUCH.DOLLY_ROTATE:
333
+ if (scope.enableZoom === false && scope.enableRotate === false) return;
334
+ handleTouchStartDollyRotate(event);
335
+ state = STATE.TOUCH_DOLLY_ROTATE;
336
+ break;
337
+ default:
338
+ state = STATE.NONE;
339
+ }
340
+ break;
341
+ default:
342
+ state = STATE.NONE;
343
+ }
344
+ if (state !== STATE.NONE) scope.dispatchEvent(_startEvent);
345
+ }
346
+ function onContextMenu(event) {
347
+ if (scope.enabled === false) return;
348
+ event.preventDefault();
349
+ }
350
+ function addPointer(event) {
351
+ pointers.push(event.pointerId);
352
+ }
353
+ function removePointer(event) {
354
+ delete pointerPositions[event.pointerId];
355
+ for (var i = 0; i < pointers.length; i++) {
356
+ if (pointers[i] === event.pointerId) {
357
+ pointers.splice(i, 1);
358
+ return;
359
+ }
360
+ }
361
+ }
362
+ function trackPointer(event) {
363
+ var position = pointerPositions[event.pointerId];
364
+ if (position === undefined) {
365
+ position = new Vector2();
366
+ pointerPositions[event.pointerId] = position;
367
+ }
368
+ position.set(event.pageX, event.pageY);
369
+ }
370
+ function getSecondPointerPosition(event) {
371
+ var pointerId = event.pointerId === pointers[0] ? pointers[1] : pointers[0];
372
+ return pointerPositions[pointerId];
373
+ }
374
+ scope.domElement.addEventListener('contextmenu', onContextMenu);
375
+ scope.domElement.addEventListener('pointerdown', onPointerDown);
376
+ scope.domElement.addEventListener('pointercancel', onPointerUp);
377
+ return _this;
378
+ }
379
+ return _createClass(defaultFirstPerspectiveControls);
380
+ }(EventDispatcher);
381
+ export default defaultFirstPerspectiveControls;
382
+ //# sourceMappingURL=defaultFirstPerspectiveControls.js.map