{"version":3,"file":"ThreeVideo.mjs","sources":["../../../../packages/ThreeVideo/ThreeVideo.ts"],"sourcesContent":["import {Group, VideoTexture, CanvasTexture, PlaneGeometry, MeshPhongMaterial, Mesh, DoubleSide} from 'three';\r\nimport {bind} from \"lodash-es\";\r\nimport {clearGroup} from '../../utils/threeUtil';\r\nimport type {Vec, Offset} from './Type'\r\nimport type CustomThreeLayer from '../ThreeLayer/CustomThreeLayer'\r\n\r\ninterface Options {\r\n  video: HTMLVideoElement //模型下载地址\r\n  videoWidth: number // 视频宽度，默认为实际的视频宽度\r\n  videoHeight: number // 视频高度，默认为实际的视频高度\r\n  videoTranslate: Vec // 视频偏移量\r\n  canvas: HTMLCanvasElement // 背景canvas图层\r\n  position: number[] // 模型的经纬度\r\n  altitude?: number  // 高度，模型的离地高度\r\n  rotation?: Vec // 模型旋转角度\r\n  scale: number | number[]  //模型缩放级别，可以整体缩放和按X Y Z缩放\r\n  angle?: number //  模型旋转角度\r\n  alwaysFront?: boolean  // 位置移动是否开启动画，开启后将会以参数中的duration进行插帧移动\r\n  opacity: number //透明度\r\n  zIndex: number // 层级\r\n}\r\n\r\nclass ThreeVideo {\r\n  object: any // group对象\r\n  animations: any // 模型的动画\r\n  layer?: CustomThreeLayer // threejs的图层对象\r\n  video?: HTMLVideoElement\r\n  videoMesh: any //视频\r\n  bgMesh: any //背景\r\n  canvasTexture?: any\r\n  videoFrame = -1\r\n  rotateFun: any\r\n\r\n  constructor(layer: CustomThreeLayer) {\r\n    this.layer = layer;\r\n  }\r\n\r\n  init(options: Options, $vue: any) {\r\n    this.video = options.video;\r\n    this.object = new Group();\r\n    this.object.isCustomGroup = true;\r\n    this.object.$vue = $vue;\r\n\r\n    return new Promise<void>((resolve) => {\r\n      this.video?.load()\r\n      this.video?.play();\r\n      const texture = new VideoTexture( this.video as HTMLVideoElement );\r\n      const geometry = new PlaneGeometry(options.videoWidth || this.video?.videoWidth, options.videoHeight || this.video?.videoHeight); //矩形平面\r\n      const material = new MeshPhongMaterial({\r\n        map: texture, // 设置纹理贴图\r\n        side: DoubleSide,\r\n        transparent: true,\r\n        depthTest: false\r\n      }); //材质对象Material\r\n      const mesh = new Mesh(geometry, material); //网格模型对象Mesh\r\n      mesh.renderOrder = 3;\r\n      mesh.rotation.y = Math.PI;\r\n      mesh.name = 'video';\r\n      this.videoMesh = mesh;\r\n      this.object.add(mesh);\r\n      this.setVideoTranslate(options.videoTranslate);\r\n      this.setPosition(options.position);\r\n      this.setRotation(options.rotation);\r\n      this.setScale(options.scale);\r\n      this.setAltitude(options.altitude)\r\n      this.layer?.add(this.object);\r\n      this.videoAnimate();\r\n      this.addBgCanvas(options.canvas)\r\n      this.setAngle(options.angle);\r\n      this.setOpacity(options.opacity);\r\n      this.setzIndex(options.zIndex || 0);\r\n      this.bindAlwaysFront(options.alwaysFront);\r\n      resolve()\r\n    })\r\n\r\n  }\r\n\r\n  bindAlwaysFront(alwaysFront?: boolean){\r\n    if(alwaysFront){\r\n      const map = this.layer?.getMap();\r\n      this.rotateFun = bind(this._changeMapRotate, this)\r\n      map.on('rotatechange', this.rotateFun)\r\n    }\r\n  }\r\n\r\n  unBindAlwaysFront(){\r\n    if(this.rotateFun){\r\n      const map = this.layer?.getMap();\r\n      if(map){\r\n        map.off('rotatechange', this.rotateFun)\r\n      }\r\n    }\r\n  }\r\n\r\n  _changeMapRotate(){\r\n    const map = this.layer?.getMap();\r\n    const rotate = map.getRotation();\r\n    this.setAngle(rotate);\r\n  }\r\n\r\n  addBgCanvas(canvas: HTMLCanvasElement){\r\n    if(!canvas){\r\n      return\r\n    }\r\n    const texture = new CanvasTexture( canvas );\r\n    const geometry = new PlaneGeometry(canvas.width, canvas.height); //矩形平面\r\n    const material = new MeshPhongMaterial({\r\n      map: texture, // 设置纹理贴图\r\n      side: DoubleSide,\r\n      transparent: true,\r\n      depthTest: false\r\n    }); //材质对象Material\r\n    const mesh = new Mesh(geometry, material); //网格模型对象Mesh\r\n    mesh.name = 'bg';\r\n    mesh.renderOrder = 1;\r\n    this.object.add(mesh);\r\n    this.canvasTexture = texture;\r\n    this.bgMesh = mesh;\r\n  }\r\n\r\n  videoAnimate(){\r\n    this.videoFrame = requestAnimationFrame(() => {\r\n      this.videoAnimate();\r\n    })\r\n    if(this.canvasTexture){\r\n      this.canvasTexture.needsUpdate = true;\r\n    }\r\n    this.refresh()\r\n  }\r\n\r\n  cancelCanvasTextureAnimate(){\r\n    if(this.videoFrame > 0) {\r\n      cancelAnimationFrame(this.videoFrame);\r\n    }\r\n  }\r\n\r\n  setScale(scale: number | number[]) {\r\n    let scaleArray: number[];\r\n    if (typeof scale === 'number') {\r\n      scaleArray = [scale, scale, scale];\r\n    } else {\r\n      scaleArray = scale;\r\n    }\r\n    this.object.scale.set(...scaleArray);\r\n  }\r\n\r\n  setPosition(position) {\r\n    const positionConvert = this.layer?.convertLngLat(position);\r\n    this.object.position.setX(positionConvert[0]);\r\n    this.object.position.setY(positionConvert[1]);\r\n    this.refresh();\r\n  }\r\n\r\n  setRotation(rotation: Vec | undefined) {\r\n    if (rotation) {\r\n      const x = Math.PI / 180 * (rotation.x || 0);\r\n      const y = Math.PI / 180 * (rotation.y || 0);\r\n      const z = Math.PI / 180 * (rotation.z || 0);\r\n      this.object.rotation.set(x, y, z);\r\n      this.refresh();\r\n    }\r\n  }\r\n  setVideoTranslate(translate: Vec) {\r\n    if (translate) {\r\n      this.videoMesh.translateX(translate.x)\r\n      this.videoMesh.translateY(translate.y)\r\n      this.videoMesh.translateZ(translate.z)\r\n      this.refresh();\r\n    }\r\n  }\r\n\r\n  setAltitude(altitude) {\r\n    if (altitude !== undefined) {\r\n      this.object.position.setZ(altitude);\r\n      this.refresh();\r\n    }\r\n  }\r\n\r\n  setAngle(angle?: number) {\r\n    if(angle !== undefined){\r\n      const x = this.object.rotation.x;\r\n      const z = this.object.rotation.z;\r\n      const y = Math.PI / 180 * angle;\r\n      this.object.rotation.set(x, y, z);\r\n      this.refresh();\r\n    }\r\n  }\r\n\r\n  setOpacity(opacity: number){\r\n    this.videoMesh.material.opacity = opacity;\r\n    if(this.bgMesh){\r\n      this.bgMesh.material.opacity = opacity;\r\n    }\r\n    this.refresh();\r\n  }\r\n\r\n  setzIndex(zIndex: number) {\r\n    this.object.renderOrder = zIndex;\r\n  }\r\n\r\n  refresh() {\r\n    this.layer?.update();\r\n  }\r\n\r\n  show() {\r\n    this.object.visible = true;\r\n    this.refresh();\r\n  }\r\n\r\n  hide() {\r\n    this.object.visible = false;\r\n    this.refresh();\r\n  }\r\n\r\n  start() {\r\n    this.video?.play()\r\n  }\r\n\r\n  pause() {\r\n    this.video?.pause()\r\n  }\r\n\r\n  remove(){\r\n    if (this.object) {\r\n      this.layer?.remove(this.object)\r\n      this.unBindAlwaysFront()\r\n    }\r\n  }\r\n\r\n  destroy() {\r\n    this.cancelCanvasTextureAnimate();\r\n    this.unBindAlwaysFront();\r\n    if (this.object) {\r\n      this.object.$vue = null;\r\n      clearGroup(this.object);\r\n      this.video = undefined;\r\n      this.videoMesh = undefined;\r\n      this.bgMesh = undefined;\r\n      this.canvasTexture = undefined;\r\n      this.rotateFun = undefined;\r\n      this.object = null;\r\n      this.layer = undefined;\r\n    }\r\n  }\r\n}\r\n\r\nexport default ThreeVideo\r\n"],"names":[],"mappings":"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"}