{"version":3,"file":"ng3-webxr.mjs","sources":["../../../projects/ng3-webxr/src/lib/vr/webvr.service.ts","../../../projects/ng3-webxr/src/lib/vr/vr-controller.component.ts","../../../projects/ng3-webxr/src/lib/vr/guipointer.directive.ts","../../../projects/ng3-webxr/src/lib/vr/highlight.directive.ts","../../../projects/ng3-webxr/src/lib/vr/showcontroller.directive.ts","../../../projects/ng3-webxr/src/lib/vr/teleport.directive.ts","../../../projects/ng3-webxr/src/lib/vr/trackpointer.directive.ts","../../../projects/ng3-webxr/src/lib/vr/webvr.directive.ts","../../../projects/ng3-webxr/src/lib/ar/webar.service.ts","../../../projects/ng3-webxr/src/lib/ar/ar-controller.component.ts","../../../projects/ng3-webxr/src/lib/ar/ar-gestures.component.ts","../../../projects/ng3-webxr/src/lib/ar/webar.directive.ts","../../../projects/ng3-webxr/src/lib/ng3-webxr.module.ts","../../../projects/ng3-webxr/src/public-api.ts","../../../projects/ng3-webxr/src/ng3-webxr.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\n\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\n\r\nimport { Group, Scene, WebXRManager } from \"three\";\r\n\r\n\r\nexport class WebVRController {\r\n  public connected = new BehaviorSubject<XRInputSource | undefined>(undefined)\r\n  public disconnected = new Subject<boolean>()\r\n\r\n  public dispose!: () => void;\r\n\r\n  constructor(public controller: Group) {\r\n    const connected = (event: any) => {\r\n      this.connected.next(event['data']);\r\n    }\r\n    this.controller.addEventListener('connected', connected);\r\n\r\n    const disconnected = () => {\r\n      this.disconnected.next(true);\r\n    }\r\n    this.controller.addEventListener('disconnected', disconnected);\r\n\r\n    this.dispose = () => {\r\n      this.controller.removeEventListener('connected', connected);\r\n      this.controller.removeEventListener('disconnected', disconnected);\r\n    }\r\n  }\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class WebVRService {\r\n  public xrsession = new BehaviorSubject<boolean>(false);\r\n\r\n  public manager!: WebXRManager;\r\n\r\n  public left!: WebVRController;\r\n  public right!: WebVRController;\r\n\r\n  public dispose!: () => void;\r\n\r\n  start(xr: WebXRManager, scene: Scene, spacetype: XRReferenceSpaceType): void {\r\n    // this will fail if type isn't supported by device\r\n    xr.setReferenceSpaceType(spacetype);\r\n\r\n    console.log('WebVR service starting');\r\n\r\n    const sessionstart = () => this.xrsession.next(true);\r\n    xr.addEventListener('sessionstart', sessionstart)\r\n\r\n    const sessionend = () => this.xrsession.next(false);\r\n    xr.addEventListener('sessionend', sessionend)\r\n\r\n    const left = xr.getController(0);\r\n    scene.add(left);\r\n    this.left = new WebVRController(left)\r\n\r\n    const right = xr.getController(1);\r\n    scene.add(right);\r\n    this.right = new WebVRController(right)\r\n\r\n\r\n    this.manager = xr;\r\n\r\n    this.dispose = () => {\r\n      scene.remove(left);\r\n      scene.remove(right);\r\n      xr.removeEventListener('sessionstart', sessionstart);\r\n      xr.removeEventListener('sessionend', sessionend);\r\n      this.left.dispose();\r\n      this.right.dispose();\r\n    }\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { BehaviorSubject, Subject, Subscription } from \"rxjs\";\r\n\r\nimport { Group, Object3D, Vector2, WebXRManager } from \"three\";\r\n\r\nimport { NgtRenderState, NgtStore } from \"@angular-three/core\";\r\n\r\nimport { WebVRService } from \"./webvr.service\"; \r\n\r\n\r\nexport class ConnectedEvent {\r\n  constructor(public controller: Group, public xrinput: XRInputSource) { }\r\n}\r\n\r\nexport class AxisEvent {\r\n  constructor(public axis: Vector2, public deltaTime: number) { }\r\n}\r\n\r\n@Component({\r\n  selector: 'vr-controller',\r\n  template: '<ngt-group (beforeRender)=\"tick($event)\"></ngt-group>',\r\n})\r\nexport class VRControllerComponent implements OnInit, OnDestroy {\r\n  @Input() index = 0;\r\n  @Input() name = '';\r\n\r\n  @Output() sessionstart = new BehaviorSubject<WebXRManager | undefined>(undefined)\r\n\r\n  @Output() triggerstart = new EventEmitter<XRInputSource>()\r\n  @Output() trigger = new EventEmitter<XRInputSource>()\r\n  @Output() triggerend = new EventEmitter<XRInputSource>()\r\n\r\n  @Output() gripstart = new EventEmitter<XRInputSource>()\r\n  @Output() grip = new EventEmitter<XRInputSource>()\r\n  @Output() gripend = new EventEmitter<XRInputSource>()\r\n\r\n  @Output() touchpad = new EventEmitter<boolean>()\r\n  @Output() touchpadaxis = new EventEmitter<AxisEvent>()\r\n\r\n  @Output() joystick = new EventEmitter<boolean>()\r\n  @Output() joystickaxis = new EventEmitter<AxisEvent>()\r\n\r\n  @Output() connected = new BehaviorSubject<ConnectedEvent | undefined>(undefined)\r\n  @Output() disconnected = new EventEmitter<boolean>()\r\n\r\n  @Output() beforeRender = new EventEmitter<NgtRenderState>()\r\n\r\n  private controller!: Group;\r\n  private gamepad?: Gamepad;\r\n\r\n  private subs = new Subscription();\r\n  private cleanup = () => { }\r\n\r\n  constructor(\r\n    private webvr: WebVRService,\r\n    private store: NgtStore,\r\n  ) {\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.cleanup();\r\n    this.subs.unsubscribe();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.webvr.manager) {\r\n      console.error('webvr directive missing from ngt-canvas');\r\n      return;\r\n    }\r\n    const gl = this.store.get((s) => s.gl);\r\n\r\n    this.subs.add(this.webvr.xrsession.subscribe(isPresenting => {\r\n      if (isPresenting) {\r\n        this.sessionstart.next(gl.xr);\r\n      }\r\n    }));\r\n\r\n    let connected: BehaviorSubject<any>;\r\n    let disconnected: Subject<boolean>;\r\n\r\n    switch (this.index) {\r\n      case 0:\r\n        this.controller = this.webvr.left.controller;\r\n        connected = this.webvr.left.connected;\r\n        disconnected = this.webvr.left.disconnected;\r\n        break;\r\n      case 1:\r\n        this.controller = this.webvr.right.controller;\r\n        connected = this.webvr.right.connected;\r\n        disconnected = this.webvr.right.disconnected;\r\n        break;\r\n      default:\r\n        console.error('xr-controler unhandled index', this.index);\r\n        return;\r\n    }\r\n\r\n    this.subs.add(connected.subscribe((event: XRInputSource) => {\r\n      if (!event) return;\r\n      this.controller.name = event.handedness;\r\n      this.gamepad = event.gamepad;\r\n      this.connected.next(new ConnectedEvent(this.controller, event));\r\n    }));\r\n\r\n    this.subs.add(disconnected.subscribe((event: boolean) => {\r\n      if (!event) return;\r\n      this.disconnected.next(true);\r\n    }));\r\n\r\n    const selectstart = (event: any) => {\r\n      const data: XRInputSource = event['data'];\r\n      this.triggerstart.next(data);\r\n    }\r\n    this.controller.addEventListener('selectstart', selectstart);\r\n\r\n    const selectend = (event: any) => {\r\n      this.trigger.next(event['data']);\r\n      this.triggerend.next(event['data']);\r\n    }\r\n    this.controller.addEventListener('selectend', selectend);\r\n\r\n    const squeezestart = (event: any) => {\r\n      this.gripstart.next(event['data']);\r\n    }\r\n    this.controller.addEventListener('squeezestart', squeezestart);\r\n\r\n    const squeezeend = (event: any) => {\r\n      this.grip.next(event['data']);\r\n      this.gripend.next(event['data']);\r\n    }\r\n    this.controller.addEventListener('squeezeend', squeezeend);\r\n\r\n    this.cleanup = () => {\r\n      this.controller.removeEventListener('squeezeend', squeezeend);\r\n      this.controller.removeEventListener('squeezestart', squeezestart);\r\n      this.controller.removeEventListener('selectend', selectend);\r\n      this.controller.removeEventListener('selectstart', selectstart);\r\n    }\r\n  }\r\n\r\n  touchpad_pressed = false;\r\n  joystick_pressed = false;\r\n  touchpad_event = new AxisEvent(new Vector2(), 0);\r\n  joystick_event = new AxisEvent(new Vector2(), 0);\r\n\r\n  tick(event: { state: NgtRenderState, object: Object3D }) {\r\n    if (this.gamepad) {\r\n      if (this.gamepad.buttons.length > 2) {\r\n        // 6 Y B\r\n        // 5 X A\r\n        // 3 joystick press\r\n        if (this.gamepad.buttons[2].pressed && !this.touchpad_pressed) {\r\n          this.touchpad.next(true);\r\n          this.touchpad_pressed = true;\r\n        }\r\n        else if (this.touchpad_pressed && !this.gamepad.buttons[2].pressed) {\r\n          this.touchpad.next(false);\r\n          this.touchpad_pressed = false;\r\n        }\r\n      }\r\n\r\n      if (this.gamepad.buttons.length > 3) {\r\n        if (this.gamepad.buttons[3].pressed && !this.joystick_pressed) {\r\n          this.joystick.next(true);\r\n          this.joystick_pressed = true;\r\n        }\r\n        else if (this.joystick_pressed && !this.gamepad.buttons[3].pressed) {\r\n          this.joystick.next(false);\r\n          this.joystick_pressed = false;\r\n        }\r\n      }\r\n\r\n      if (this.touchpadaxis.observed) {\r\n        this.touchpad_event.axis.x = this.gamepad.axes[0];\r\n        this.touchpad_event.axis.y = this.gamepad.axes[1];\r\n        this.touchpad_event.deltaTime = event.state.delta;\r\n        this.touchpadaxis.next(this.touchpad_event);\r\n      }\r\n      if (this.joystickaxis.observed) {\r\n        this.joystick_event.axis.x = this.gamepad.axes[2];\r\n        this.joystick_event.axis.y = this.gamepad.axes[3];\r\n        this.joystick_event.deltaTime = event.state.delta;\r\n        this.joystickaxis.next(this.joystick_event);\r\n      }\r\n    }\r\n    if (this.beforeRender.observed) {\r\n      this.beforeRender.next(event.state);\r\n    }\r\n\r\n  }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { Group, Intersection, Matrix4, Object3D, Raycaster } from \"three\";\r\nimport { BooleanInput, coerceBooleanProperty } from \"@angular-three/core\";\r\n\r\nimport { VRControllerComponent } from \"./vr-controller.component\";\r\n\r\n@Directive({\r\n  selector: '[guipointer]',\r\n})\r\nexport class GUIPointerDirective implements OnInit, OnDestroy {\r\n  private _enabled: BooleanInput = true;\r\n  @Input()\r\n  get guipointer(): boolean { return coerceBooleanProperty(this._enabled) }\r\n  set guipointer(newvalue: BooleanInput) {\r\n    this._enabled = newvalue;\r\n  }\r\n  @Input() guis: Array<Object3D> = [];\r\n\r\n  private subs = new Subscription();\r\n  private cleanup = () => { }\r\n\r\n  constructor(\r\n    private xr: VRControllerComponent,\r\n  ) {\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.cleanup();\r\n    this.subs.unsubscribe();\r\n  }\r\n\r\n  notify(intersections: Array<Intersection>, type: string) {\r\n    intersections.forEach(item => {\r\n      item.object.dispatchEvent({ type });\r\n    })\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const events: any = {\r\n      'move': 'pointermove',\r\n      'select': 'click',\r\n      'selectstart': 'pointerdown',\r\n      'selectend': 'pointerup'\r\n    };\r\n\r\n    const _event: any = { type: '' };\r\n\r\n    const raycaster = new Raycaster();\r\n    const tempMatrix = new Matrix4();\r\n\r\n    let lasttype = '';\r\n    let lastmove: Array<Intersection> | undefined = undefined;\r\n\r\n    const onXRControllerEvent = (event: any) => {\r\n\r\n      const controller = event.target;\r\n\r\n      tempMatrix.identity().extractRotation(controller.matrixWorld);\r\n\r\n      raycaster.ray.origin.setFromMatrixPosition(controller.matrixWorld);\r\n      raycaster.ray.direction.set(0, 0, - 1).applyMatrix4(tempMatrix);\r\n\r\n      const objects = this.guis.filter(x => x !== undefined);\r\n\r\n      const intersections = raycaster.intersectObjects(objects, false);\r\n\r\n      _event.controller = controller;\r\n      _event.stop = false;\r\n\r\n      if (intersections.length > 0) {\r\n        const objects: Array<Object3D> = [];\r\n\r\n        intersections.forEach(intersection => {\r\n          if (_event.stop) return;\r\n\r\n          const object = intersection.object;\r\n\r\n          _event.type = events[event.type];\r\n          _event.data = intersection;\r\n\r\n\r\n          object.dispatchEvent(_event);\r\n          lasttype = _event.type;\r\n          objects.push(object);\r\n        });\r\n\r\n        if (lasttype == 'pointermove') {\r\n          if (lastmove) {\r\n            // notify any object that pointer is no longer intersecting\r\n            lastmove.forEach(intersection => {\r\n              if (!objects.includes(intersection.object)) {\r\n                _event.type = 'pointerout';\r\n                _event.data = intersection;\r\n                intersection.object.dispatchEvent(_event);\r\n              }\r\n            })\r\n          }\r\n          else {\r\n            intersections.forEach(intersection => {\r\n              _event.type = 'pointerover';\r\n              _event.data = intersection;\r\n              intersection.object.dispatchEvent(_event);\r\n            });\r\n          }\r\n          lastmove = intersections;\r\n        }\r\n      }\r\n      else {\r\n        if (lastmove) {\r\n          if (lastmove) this.notify(lastmove, 'pointerout');\r\n          lastmove = undefined;\r\n        }\r\n\r\n        if (event.type != 'move') {\r\n          objects.forEach(object => object.dispatchEvent({ type: 'raymissed' }));\r\n        }\r\n\r\n\r\n      }\r\n    }\r\n\r\n    let controller: Group;\r\n\r\n    this.subs.add(this.xr.connected.subscribe(next => {\r\n      if (!next) return;\r\n\r\n      controller = next.controller;\r\n\r\n      if (this.guipointer) {\r\n        controller.addEventListener('move', onXRControllerEvent);\r\n        controller.addEventListener('select', onXRControllerEvent);\r\n        controller.addEventListener('selectstart', onXRControllerEvent);\r\n        controller.addEventListener('selectend', onXRControllerEvent);\r\n\r\n        this.cleanup = () => {\r\n          controller.removeEventListener('move', onXRControllerEvent);\r\n          controller.removeEventListener('select', onXRControllerEvent);\r\n          controller.removeEventListener('selectstart', onXRControllerEvent);\r\n          controller.removeEventListener('selectend', onXRControllerEvent);\r\n        }\r\n      }\r\n    }));\r\n  }\r\n}\r\n","import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { Group, Matrix4, Object3D, Raycaster } from \"three\";\r\n\r\nimport { BooleanInput, coerceBooleanProperty } from \"@angular-three/core\";\r\n\r\nimport { VRControllerComponent } from \"./vr-controller.component\";\r\n\r\n\r\n@Directive({\r\n  selector: '[highlight]',\r\n})\r\nexport class HighlightDirective implements OnInit, OnDestroy {\r\n  private _enabled: BooleanInput = true;\r\n  @Input()\r\n  get highlight(): boolean { return coerceBooleanProperty(this._enabled) }\r\n  set highlight(newvalue: BooleanInput) {\r\n    this._enabled = newvalue;\r\n    this.unhighlight();\r\n  }\r\n  @Input() tohighlight: Array<Object3D> = [];\r\n\r\n  @Output() highlighting = new EventEmitter<Object3D | undefined>();\r\n\r\n  private controller!: Group;\r\n  private subs = new Subscription();\r\n\r\n  constructor(\r\n    private xr: VRControllerComponent,\r\n  ) { }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subs.unsubscribe();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.tohighlight) {\r\n      console.warn('Highlight directive requires room Group to be set');\r\n      return;\r\n    }\r\n\r\n    this.subs.add(this.xr.connected.subscribe(next => {\r\n      if (!next) return;\r\n      this.controller = next.controller;\r\n    }));\r\n\r\n    this.subs.add(this.xr.beforeRender.subscribe(next => {\r\n      if (this.highlight) this.tick();\r\n    }));\r\n  }\r\n\r\n  private getPointerIntersections(): any {\r\n    const tempMatrix = new Matrix4();\r\n\r\n    tempMatrix.identity().extractRotation(this.controller.matrixWorld);\r\n\r\n    const raycaster = new Raycaster();\r\n\r\n    raycaster.ray.origin.setFromMatrixPosition(this.controller.matrixWorld);\r\n    raycaster.ray.direction.set(0, 0, - 1).applyMatrix4(tempMatrix);\r\n\r\n    return raycaster.intersectObjects(this.tohighlight, false);\r\n  }\r\n\r\n  private Intersect: any;\r\n  private IntersectObject: any;\r\n\r\n  private unhighlight() {\r\n    if (this.IntersectObject) {\r\n      this.IntersectObject.material.emissive.b = 0;\r\n      this.IntersectObject = undefined;\r\n      this.highlighting.next(this.IntersectObject);\r\n    }\r\n  }\r\n\r\n  private tick() {\r\n    if (this.tohighlight && this.controller) {\r\n\r\n      const intersects = this.getPointerIntersections();\r\n\r\n      if (intersects.length > 0) {\r\n        if (this.IntersectObject != intersects[0].object) {\r\n\r\n          if (this.IntersectObject) {\r\n            this.IntersectObject.material.emissive.b = 0;\r\n          }\r\n\r\n          this.Intersect = intersects[0];\r\n          this.IntersectObject = this.Intersect.object;\r\n          this.IntersectObject.material.emissive.b = 1;\r\n          this.highlighting.next(this.IntersectObject);\r\n        }\r\n      } else {\r\n        this.unhighlight();\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { Scene, XRGripSpace } from \"three\";\r\n\r\nimport { BooleanInput, coerceBooleanProperty, NgtStore } from \"@angular-three/core\";\r\n\r\nimport { XRControllerModel, XRControllerModelFactory } from \"three-stdlib\";\r\n\r\nimport { VRControllerComponent } from \"./vr-controller.component\";\r\n\r\n@Directive({\r\n  selector: '[showcontroller]',\r\n})\r\nexport class ShowControllerDirective implements OnInit, OnDestroy {\r\n  private _enabled: BooleanInput = true;\r\n  @Input()\r\n  get showcontroller(): boolean { return coerceBooleanProperty(this._enabled) }\r\n  set showcontroller(newvalue: BooleanInput) {\r\n    this._enabled = newvalue;\r\n    if (this.grip) {\r\n      if (newvalue)\r\n        this.show();\r\n      else\r\n        this.hide();\r\n    }\r\n  }\r\n\r\n  private scene!: Scene;\r\n  private grip!: XRGripSpace;\r\n  private model!: XRControllerModel;\r\n\r\n  private subs = new Subscription();\r\n  constructor(\r\n    private xr: VRControllerComponent,\r\n    private store: NgtStore,\r\n  ) { }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.grip) {\r\n      this.grip.remove(this.model);\r\n    }\r\n    this.hide();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const renderer = this.store.get((s) => s.gl);\r\n    this.scene = this.store.get((s) => s.scene);\r\n\r\n    this.subs.add(this.xr.connected.subscribe(next => {\r\n      const controllerModelFactory = new XRControllerModelFactory();\r\n\r\n      this.grip = renderer.xr.getControllerGrip(this.xr.index);\r\n      this.model = controllerModelFactory.createControllerModel(this.grip)\r\n      this.grip.add(this.model);\r\n\r\n      if (this.showcontroller) this.show();\r\n    }));\r\n\r\n    this.subs.add(this.xr.disconnected.subscribe(next => {\r\n      if (this.showcontroller) this.hide();\r\n    }));\r\n  }\r\n\r\n  private show() {\r\n    this.scene.add(this.grip);\r\n  }\r\n\r\n  private hide() {\r\n    this.scene.remove(this.grip);\r\n  }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { Group, Matrix4, Mesh, Raycaster, Vector3, WebXRManager } from \"three\";\r\n\r\nimport { BooleanInput, coerceBooleanProperty } from \"@angular-three/core\";\r\n\r\nimport { VRControllerComponent } from \"./vr-controller.component\";\r\n\r\n@Directive({\r\n  selector: '[teleport]',\r\n})\r\nexport class TeleportDirective implements OnInit, OnDestroy {\r\n  private _teleportEnabled: BooleanInput = true;\r\n  @Input()\r\n  get teleport(): boolean { return coerceBooleanProperty(this._teleportEnabled) }\r\n  set teleport(newvalue: BooleanInput) {\r\n    this._teleportEnabled = newvalue;\r\n    this.hideMarker();\r\n    this.isSelecting = false;\r\n  }\r\n\r\n  @Input() marker!: Mesh;\r\n  @Input() floor!: Mesh;\r\n\r\n  private baseReferenceSpace?: XRReferenceSpace | null;\r\n\r\n  private controller!: Group;\r\n  private isSelecting = false;\r\n  private subs = new Subscription();\r\n\r\n  constructor(\r\n    private xr: VRControllerComponent,\r\n  ) { }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subs.unsubscribe();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.marker) {\r\n      console.warn('Teleport directive missing marker for showing where to teleport');\r\n    }\r\n    if (!this.floor) {\r\n      console.warn('Teleport directive missing floor for raycasting intersection');\r\n    }\r\n\r\n    let manager!: WebXRManager;\r\n    this.subs.add(this.xr.sessionstart.subscribe(xrmanager => {\r\n      if (!xrmanager) return;\r\n      this.baseReferenceSpace = xrmanager.getReferenceSpace();\r\n      manager = xrmanager;\r\n    }));\r\n\r\n    this.subs.add(this.xr.connected.subscribe(next => {\r\n      if (!next) return;\r\n      this.controller = next.controller\r\n    }));\r\n\r\n    this.subs.add(this.xr.triggerstart.subscribe(() => {\r\n      if (this.teleport) {\r\n        this.isSelecting = true;\r\n      }\r\n    }));\r\n\r\n    this.subs.add(this.xr.triggerend.subscribe(() => {\r\n      if (this.teleport) {\r\n        this.isSelecting = false;\r\n        this.teleportToMarker(manager, this.MarkerIntersection);\r\n      }\r\n    }));\r\n\r\n    this.subs.add(this.xr.beforeRender.subscribe(() => {\r\n      if (this.teleport) {\r\n        this.tick();\r\n      }\r\n    }));\r\n\r\n    this.hideMarker();\r\n  }\r\n\r\n  private hideMarker() {\r\n    if (this.marker) {\r\n      this.marker.visible = false;\r\n    }\r\n  }\r\n\r\n  private MarkerIntersection?: Vector3;\r\n\r\n  private teleportToMarker(xrmanager: WebXRManager, position?: Vector3) {\r\n    if (position) {\r\n      const offsetPosition = <DOMPointReadOnly>{ x: - position.x, y: - position.y, z: - position.z, w: 1 };\r\n      const offsetRotation = <DOMPointReadOnly>{ x: 0, y: 0, z: 0, w: 1 };\r\n      const transform = new XRRigidTransform(offsetPosition, offsetRotation);\r\n      if (this.baseReferenceSpace) {\r\n        const teleportSpaceOffset = this.baseReferenceSpace.getOffsetReferenceSpace(transform);\r\n        xrmanager.setReferenceSpace(teleportSpaceOffset);\r\n      }\r\n    }\r\n  }\r\n\r\n  private tick() {\r\n    this.MarkerIntersection = undefined;\r\n\r\n    if (this.isSelecting && this.floor) {\r\n\r\n      const tempMatrix = new Matrix4();\r\n      tempMatrix.identity().extractRotation(this.controller.matrixWorld);\r\n\r\n      const raycaster = new Raycaster();\r\n      raycaster.ray.origin.setFromMatrixPosition(this.controller.matrixWorld);\r\n      raycaster.ray.direction.set(0, 0, - 1).applyMatrix4(tempMatrix);\r\n\r\n      const intersects = raycaster.intersectObjects([this.floor]);\r\n\r\n      if (intersects.length > 0) {\r\n\r\n        this.MarkerIntersection = intersects[0].point;\r\n        this.MarkerIntersection.y = 0.01;\r\n\r\n      }\r\n\r\n    }\r\n\r\n    if (this.MarkerIntersection) this.marker.position.copy(this.MarkerIntersection);\r\n\r\n    if (this.marker)\r\n      this.marker.visible = this.MarkerIntersection !== undefined;\r\n  }\r\n\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { AdditiveBlending, BufferGeometry, Float32BufferAttribute, Group, Line, LineBasicMaterial, Object3D } from \"three\";\r\n\r\nimport { BooleanInput, coerceBooleanProperty } from \"@angular-three/core\";\r\n\r\nimport { VRControllerComponent } from \"./vr-controller.component\";\r\n\r\n@Directive({\r\n  selector: '[trackedpointer]',\r\n})\r\nexport class TrackedPointerDirective implements OnInit, OnDestroy {\r\n  private _enabled: BooleanInput = true;\r\n  @Input()\r\n  get trackedpointer(): boolean { return coerceBooleanProperty(this._enabled) }\r\n  set trackedpointer(newvalue: BooleanInput) {\r\n    this._enabled = newvalue;\r\n    if (this.line) {\r\n      if (newvalue)\r\n        this.show();\r\n      else\r\n        this.hide();\r\n    }\r\n  }\r\n\r\n  line!: Object3D;\r\n\r\n  private controller!: Group;\r\n  private subs = new Subscription();\r\n\r\n  constructor(\r\n    private xr: VRControllerComponent,\r\n  ) { }\r\n\r\n  ngOnDestroy(): void {\r\n    this.controller?.remove(this.line);\r\n    this.subs.unsubscribe();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.subs.add(this.xr.connected.subscribe(next => {\r\n      if (!next) return;\r\n      this.controller = next.controller\r\n\r\n      if (next.xrinput.targetRayMode == 'tracked-pointer') {\r\n        this.line = this.buildTrackPointer();\r\n\r\n        if (this.trackedpointer) this.show();\r\n      }\r\n    }));\r\n\r\n    this.subs.add(this.xr.disconnected.subscribe(next => {\r\n      if (this.trackedpointer && this.controller) this.hide();\r\n    }));\r\n  }\r\n\r\n  private buildTrackPointer() {\r\n    const geometry = new BufferGeometry();\r\n    geometry.setAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 0, - 1], 3));\r\n    geometry.setAttribute('color', new Float32BufferAttribute([0.5, 0.5, 0.5, 0, 0, 0], 3));\r\n\r\n    const material = new LineBasicMaterial({ vertexColors: true, blending: AdditiveBlending });\r\n\r\n    return new Line(geometry, material);\r\n  }\r\n\r\n  private show() {\r\n    this.controller.add(this.line);\r\n  }\r\n\r\n  private hide() {\r\n    this.controller.remove(this.line)\r\n  }\r\n}\r\n","import { Directive, Input, OnInit, Self } from \"@angular/core\";\r\n\r\nimport { NgtCanvas, NgtStore } from \"@angular-three/core\";\r\n\r\nimport { VRButton } from \"three-stdlib\";\r\n\r\nimport { WebVRService } from \"./webvr.service\";\r\n\r\n@Directive({\r\n  selector: '[webvr]',\r\n})\r\nexport class WebVRDirective implements OnInit {\r\n  @Input() referenceSpaceType: XRReferenceSpaceType = 'local-floor';\r\n\r\n  constructor(\r\n    private store: NgtStore,\r\n    private webvr: WebVRService,\r\n    @Self() private parent: NgtCanvas, // cause runtime failure unless webvr directive on ngt-canvass\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    if (!(this.parent instanceof NgtCanvas)) {\r\n      console.warn('Add webvr directive to ngt-canvas');\r\n    }\r\n    const gl = this.store.get((s) => s.gl);\r\n    const scene = this.store.get((s) => s.scene);\r\n\r\n    document.body.appendChild(VRButton.createButton(gl));\r\n\r\n    this.webvr.start(gl.xr, scene, this.referenceSpaceType);\r\n  }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { Group, Scene, WebXRManager } from \"three\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class WebARService {\r\n  public isPresenting = new BehaviorSubject<boolean>(false);\r\n\r\n  public manager!: WebXRManager;\r\n\r\n  public finger1Controller!: Group;\r\n  public finger2Controller!: Group;\r\n\r\n  public dispose!: () => void;\r\n\r\n  start(xr: WebXRManager, scene: Scene, spacetype: XRReferenceSpaceType): void {\r\n    // this will fail if type isn't supported by device\r\n    xr.setReferenceSpaceType(spacetype);\r\n\r\n    console.log('WebAR service starting');\r\n\r\n    const sessionstart = () => this.isPresenting.next(true);\r\n    xr.addEventListener('sessionstart', sessionstart)\r\n\r\n    const sessionend = () => this.isPresenting.next(false);\r\n    xr.addEventListener('sessionend', sessionend)\r\n\r\n    this.finger1Controller = xr.getController(0);\r\n    scene.add(this.finger1Controller);\r\n\r\n    this.finger2Controller = xr.getController(1);\r\n    scene.add(this.finger2Controller);\r\n\r\n    this.manager = xr;\r\n\r\n    this.dispose = () => {\r\n      scene.remove(this.finger1Controller);\r\n      scene.remove(this.finger2Controller);\r\n      xr.removeEventListener('sessionstart', sessionstart);\r\n      xr.removeEventListener('sessionend', sessionend);\r\n    }\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { BehaviorSubject, Subscription } from \"rxjs\";\r\n\r\nimport { Group, Object3D, WebXRManager } from \"three\";\r\n\r\nimport { NgtRenderState, NgtStore } from \"@angular-three/core\";\r\n\r\nimport { WebARService } from \"./webar.service\";\r\n\r\n@Component({\r\n  selector: 'ar-controller',\r\n  template: '<ngt-group (beforeRender)=\"tick($event)\"></ngt-group>',\r\n})\r\nexport class ARControllerComponent implements OnInit, OnDestroy {\r\n  @Input() index = 0;\r\n\r\n  @Output() sessionstart = new BehaviorSubject<WebXRManager | undefined>(undefined)\r\n\r\n  @Output() tapstart = new EventEmitter<XRInputSource>()\r\n  @Output() tap = new EventEmitter<XRInputSource>()\r\n  @Output() tapend = new EventEmitter<XRInputSource>()\r\n\r\n  @Output() beforeRender = new EventEmitter<NgtRenderState>()\r\n\r\n  controller!: Group;\r\n\r\n  private subs = new Subscription();\r\n  private cleanup = () => { }\r\n\r\n  constructor(\r\n    private webar: WebARService,\r\n    private store: NgtStore,\r\n  ) {\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.cleanup();\r\n    this.subs.unsubscribe();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.webar.manager) {\r\n      console.error('webar directive missing from ngt-canvas');\r\n      return;\r\n    }\r\n    const gl = this.store.get((s) => s.gl);\r\n\r\n    this.subs.add(this.webar.isPresenting.subscribe(isPresenting => {\r\n      if (isPresenting) {\r\n        this.sessionstart.next(gl.xr);\r\n      }\r\n    }));\r\n\r\n    switch (this.index) {\r\n      case 0:\r\n        this.controller = this.webar.finger1Controller;\r\n        break;\r\n      case 1:\r\n        this.controller = this.webar.finger2Controller;\r\n        break;\r\n      default:\r\n        console.error('ar-controler unhandled index', this.index);\r\n        return;\r\n    }\r\n\r\n    const selectstart = (event: any) => {\r\n      this.tapstart.next(event['data']);\r\n    }\r\n    this.controller.addEventListener('selectstart', selectstart);\r\n\r\n    const selectend = (event: any) => {\r\n      this.tapend.next(event['data']);\r\n    }\r\n    this.controller.addEventListener('selectend', selectend);\r\n\r\n    const select = (event: any) => {\r\n      this.tap.next(event['data']);\r\n    }\r\n    this.controller.addEventListener('select', select);\r\n\r\n\r\n    this.cleanup = () => {\r\n      this.controller.removeEventListener('select', select);\r\n      this.controller.removeEventListener('selectend', selectend);\r\n      this.controller.removeEventListener('selectstart', selectstart);\r\n    }\r\n  }\r\n\r\n  tick(event: { state: NgtRenderState, object: Object3D }) {\r\n    if (this.beforeRender.observed) {\r\n      this.beforeRender.next(event.state);\r\n    }\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\n\r\nimport { Clock, Group, Matrix4, Vector3 } from \"three\";\r\nimport { NgtStore } from \"@angular-three/core\";\r\n\r\nimport { WebARService } from \"./webar.service\";\r\n\r\n//\r\n// Code below is adapted from https://github.com/NikLever/XRGestures/blob/main/libs/XRGestures.js\r\n//\r\n\r\nexport type SwipeDirection = 'up' | 'down';\r\n\r\ndeclare type EventType = 'unknown' | 'tap' | 'swipe' | 'pinch' | 'rotate' | 'pan';\r\n\r\nexport declare type EventState = 'start' | 'update' | 'end';\r\n\r\nclass FingerState {\r\n  startPosition?: Vector3;\r\n  startTime!: number;\r\n  endTime!: number;\r\n  pressed = false;\r\n  taps = 0;\r\n}\r\n\r\n@Component({\r\n  selector: 'ar-gestures',\r\n  template: '',\r\n})\r\nexport class ARGesturesComponent implements OnInit, OnDestroy {\r\n  @Input() doubleClickLimit = 0.2;\r\n  @Input() pressMinimum = 0.4;\r\n\r\n  @Output() press = new EventEmitter<{ position: Vector3, matrixWorld: Matrix4 }>();\r\n\r\n  @Output() tap = new EventEmitter<{ count: number, position: Vector3, matrixWorld: Matrix4 }>();\r\n\r\n  @Output() swipe = new EventEmitter<SwipeDirection>();\r\n  @Output() pinch = new EventEmitter<{ delta: number, scale: number, state: EventState }>();\r\n  @Output() rotate = new EventEmitter<{ theta: number, state: EventState }>();\r\n  @Output() pan = new EventEmitter<{ delta: Vector3, state: EventState }>();\r\n\r\n\r\n  private controller1!: Group;\r\n  private controller2!: Group;\r\n\r\n  private finger1State = new FingerState();\r\n  private finger2State = new FingerState();\r\n\r\n  private cleanup = () => { }\r\n\r\n  private type: EventType = 'unknown';\r\n\r\n  constructor(\r\n    private webar: WebARService,\r\n    private store: NgtStore,\r\n  ) {\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.cleanup();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.webar.manager) {\r\n      console.error('webar directive missing from ngt-canvas');\r\n      return;\r\n    }\r\n    const clock = this.store.get(s => s.clock);\r\n\r\n    this.controller1 = this.webar.finger1Controller;\r\n    this.controller2 = this.webar.finger2Controller;\r\n\r\n    const tapstart = (data: FingerState) => {\r\n      data.startPosition = undefined;\r\n      data.startTime = clock.getElapsedTime();\r\n\r\n      if (this.type != 'tap') data.taps = 0;\r\n\r\n      this.type = 'unknown';\r\n      data.pressed = true;\r\n    }\r\n\r\n    const selectstart1 = () => {\r\n      tapstart(this.finger1State);\r\n    }\r\n    this.controller1.addEventListener('selectstart', selectstart1);\r\n\r\n    const selectstart2 = () => {\r\n      tapstart(this.finger2State);\r\n    }\r\n    this.controller2.addEventListener('selectstart', selectstart2);\r\n\r\n    const tapend = (data: FingerState) => {\r\n      data.endTime = clock.getElapsedTime();\r\n      const startToEnd = data.endTime - data.startTime;\r\n\r\n      if (this.type === 'swipe') {\r\n        if (data.startPosition) {\r\n          const direction: SwipeDirection = (this.controller1.position.y < data.startPosition.y) ? \"down\" : \"up\";\r\n          this.swipe.next(direction);\r\n        }\r\n        this.type = 'unknown';\r\n      } else if (this.type !== 'pinch' && this.type !== 'rotate' && this.type !== 'pan') {\r\n        if (startToEnd < this.doubleClickLimit) {\r\n          this.type = 'tap';\r\n          data.taps++;\r\n        } else if (startToEnd > this.pressMinimum) {\r\n          this.press.next({ position: this.controller1.position, matrixWorld: this.controller1.matrixWorld });\r\n          this.type = 'unknown';\r\n        }\r\n      } else {\r\n        switch (this.type) {\r\n          case 'pan':\r\n            this.pan.next({ delta: new Vector3(), state: 'end' });\r\n            break;\r\n          case 'pinch':\r\n            this.pinch.next({ delta: 0, scale: 1, state: 'end' });\r\n            break;\r\n          case 'rotate':\r\n            this.rotate.next({ theta: 0, state: 'end' });\r\n            break;\r\n\r\n        }\r\n        this.type = 'unknown';\r\n      }\r\n\r\n      data.pressed = false;\r\n      data.startPosition = undefined;\r\n    }\r\n\r\n    const selectend1 = () => {\r\n      tapend(this.finger1State)\r\n    }\r\n    this.controller1.addEventListener('selectend', selectend1);\r\n\r\n    const selectend2 = () => {\r\n      tapend(this.finger2State)\r\n    }\r\n    this.controller2.addEventListener('selectend', selectend2);\r\n\r\n    const timer = setInterval(() => {\r\n      this.update(clock);\r\n    }, 100);\r\n    this.cleanup = () => {\r\n      clearInterval(timer);\r\n      this.controller1.removeEventListener('selectstart', selectstart1);\r\n      this.controller1.removeEventListener('selectend', selectend1);\r\n      this.controller1.removeEventListener('selectstart', selectstart2);\r\n      this.controller1.removeEventListener('selectend', selectend2);\r\n    }\r\n  }\r\n\r\n  get multiTouch() {\r\n    return this.finger1State.pressed && this.finger2State.pressed;\r\n  }\r\n\r\n  get touch() {\r\n    return this.finger1State.pressed || this.finger2State.pressed;\r\n  }\r\n\r\n  private up = new Vector3(0, 1, 0);\r\n  private startDistance!: number;\r\n  private startVector!: Vector3;\r\n  private startPosition!: Vector3;\r\n\r\n  update(clock: Clock) {\r\n    const data1 = this.finger1State;\r\n    const data2 = this.finger2State;\r\n\r\n    const currentTime = clock.getElapsedTime();\r\n\r\n    let elapsedTime;\r\n\r\n    if (data1.pressed && data1.startPosition === undefined) {\r\n      elapsedTime = currentTime - data1.startTime;\r\n      if (elapsedTime > 0.05) data1.startPosition = this.controller1.position.clone();\r\n    }\r\n\r\n    if (data2.pressed && data2.startPosition === undefined) {\r\n      elapsedTime = currentTime - data2.startTime;\r\n      if (elapsedTime > 0.05) data2.startPosition = this.controller2.position.clone();\r\n    }\r\n\r\n    if (!data1.pressed && this.type === 'tap') {\r\n      //Only dispatch event after double click limit is passed\r\n      elapsedTime = currentTime - data1.endTime;\r\n      if (elapsedTime > this.doubleClickLimit) {\r\n        //console.log( `XRGestures.update dispatchEvent taps:${data1.taps}` );\r\n        this.tap.next({ count: data1.taps, position: this.controller1.position, matrixWorld: this.controller1.matrixWorld });\r\n        this.type = \"unknown\";\r\n        data1.taps = 0;\r\n      }\r\n    }\r\n\r\n\r\n    if (this.type === 'unknown' && this.touch) {\r\n      if (data1.startPosition !== undefined) {\r\n        if (this.multiTouch) {\r\n          if (data2.startPosition !== undefined) {\r\n            //startPosition is undefined for 1/20 sec, test for pinch or rotate\r\n            const startDistance = data1.startPosition.distanceTo(data2.startPosition);\r\n            const currentDistance = this.controller1.position.distanceTo(this.controller2.position);\r\n            const delta = currentDistance - startDistance;\r\n            if (Math.abs(delta) > 0.01) {\r\n              this.type = 'pinch';\r\n              this.startDistance = this.controller1.position.distanceTo(this.controller2.position);\r\n              this.pinch.next({ delta: 0, scale: 1, state: 'start' });\r\n            } else {\r\n              const v1 = data2.startPosition.clone().sub(data1.startPosition).normalize();\r\n              const v2 = this.controller2.position.clone().sub(this.controller1.position).normalize();\r\n              const theta = v1.angleTo(v2);\r\n              if (Math.abs(theta) > 0.2) {\r\n                this.type = 'rotate';\r\n                this.startVector = v2.clone();\r\n                this.rotate.next({ theta: 0, state: 'start' });\r\n              }\r\n            }\r\n          }\r\n        } else {\r\n          //test for swipe or pan\r\n          let dist = data1.startPosition.distanceTo(this.controller1.position);\r\n          elapsedTime = currentTime - data1.startTime;\r\n          const velocity = dist / elapsedTime;\r\n          //console.log(`dist:${dist.toFixed(3)} velocity:${velocity.toFixed(3)}`);\r\n          if (dist > 0.01 && velocity > 0.1) {\r\n            const v = this.controller1.position.clone().sub(data1.startPosition);\r\n            let maxY = (Math.abs(v.y) > Math.abs(v.x)) && (Math.abs(v.y) > Math.abs(v.z));\r\n            if (maxY) this.type = \"swipe\";\r\n          } else if (dist > 0.006 && velocity < 0.03) {\r\n            this.type = \"pan\";\r\n            this.startPosition = this.controller1.position.clone();\r\n            this.pan.next({ delta: new Vector3(), state: 'start' });\r\n          }\r\n        }\r\n      }\r\n    } else if (this.type === 'pinch') {\r\n      const currentDistance = this.controller1.position.distanceTo(this.controller2.position);\r\n      const delta = currentDistance - this.startDistance;\r\n      const scale = currentDistance / this.startDistance;\r\n      this.pinch.next({ delta, scale, state: 'update' });\r\n    } else if (this.type === 'rotate') {\r\n      const v = this.controller2.position.clone().sub(this.controller1.position).normalize();\r\n      let theta = this.startVector.angleTo(v);\r\n      const cross = this.startVector.clone().cross(v);\r\n      if (this.up.dot(cross) > 0) theta = -theta;\r\n      this.rotate.next({ theta, state: 'update' });\r\n    } else if (this.type === 'pan') {\r\n      const delta = this.controller1.position.clone().sub(this.startPosition);\r\n      this.pan.next({ delta, state: 'update' });\r\n    }\r\n  }\r\n}\r\n","import { Directive, Input, OnInit, Self } from \"@angular/core\";\r\n\r\nimport { NgtCanvas, NgtStore } from \"@angular-three/core\";\r\n\r\nimport { ARButton } from \"three-stdlib\";\r\n\r\nimport { WebARService } from \"./webar.service\";\r\n\r\n@Directive({\r\n  selector: '[webar]',\r\n})\r\nexport class WebARDirective implements OnInit {\r\n  @Input() referenceSpaceType: XRReferenceSpaceType = 'viewer';\r\n\r\n  // https://developer.mozilla.org/en-US/docs/Web/API/XRSystem/requestSession#session_features\r\n  @Input() sessionInit: any;\r\n\r\n  constructor(\r\n    private store: NgtStore,\r\n    private webar: WebARService,\r\n    @Self() private parent: NgtCanvas, // cause runtime failure unless webvr directive on ngt-canvass\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    if (!(this.parent instanceof NgtCanvas)) {\r\n      console.warn('Add webar directive to ngt-canvas');\r\n    }\r\n    const gl = this.store.get((s) => s.gl);\r\n    const scene = this.store.get((s) => s.scene);\r\n\r\n    document.body.appendChild(ARButton.createButton(gl, this.sessionInit));\r\n\r\n    this.webar.start(gl.xr, scene, this.referenceSpaceType);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { NgtGroupModule } from '@angular-three/core/group';\r\n\r\nimport { HighlightDirective } from './vr/highlight.directive';\r\nimport { ShowControllerDirective } from './vr/showcontroller.directive';\r\nimport { TeleportDirective } from './vr/teleport.directive';\r\nimport { TrackedPointerDirective } from './vr/trackpointer.directive';\r\nimport { VRControllerComponent } from './vr/vr-controller.component';\r\nimport { WebVRDirective } from './vr/webvr.directive';\r\n\r\nimport { ARControllerComponent } from './ar/ar-controller.component';\r\nimport { WebARDirective } from './ar/webar.directive';\r\nimport { ARGesturesComponent } from './ar/ar-gestures.component';\r\nimport { GUIPointerDirective } from './vr/guipointer.directive';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    GUIPointerDirective,\r\n    HighlightDirective,\r\n    ShowControllerDirective,\r\n    TeleportDirective,\r\n    TrackedPointerDirective,\r\n    VRControllerComponent,\r\n    WebVRDirective,\r\n\r\n    ARControllerComponent,\r\n    ARGesturesComponent,\r\n    WebARDirective,\r\n  ],\r\n  imports: [\r\n    NgtGroupModule,\r\n  ],\r\n  exports: [\r\n    GUIPointerDirective,\r\n    HighlightDirective,\r\n    ShowControllerDirective,\r\n    TeleportDirective,\r\n    TrackedPointerDirective,\r\n    VRControllerComponent,\r\n    WebVRDirective,\r\n\r\n    ARControllerComponent,\r\n    ARGesturesComponent,\r\n    WebARDirective,\r\n  ]\r\n})\r\nexport class Ng3WebxrModule { }\r\n","/*\n * Public API Surface of ng3-webxr\n */\n\nexport * from './lib/vr/guipointer.directive';\nexport * from './lib/vr/highlight.directive';\nexport * from './lib/vr/showcontroller.directive';\nexport * from './lib/vr/teleport.directive';\nexport * from './lib/vr/trackpointer.directive';\nexport * from './lib/vr/vr-controller.component';\nexport * from './lib/vr/webvr.directive';\nexport * from './lib/vr/webvr.service';\n\nexport * from './lib/ar/ar-controller.component';\nexport * from './lib/ar/ar-gestures.component';\nexport * from './lib/ar/webar.directive';\nexport * from './lib/ar/webar.service';\n\nexport * from './lib/ng3-webxr.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.WebVRService","i1.VRControllerComponent","i1","i2.WebVRService","i1.WebARService","i2.WebARService"],"mappings":"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"}