Skip to content
Snippets Groups Projects
camera-tools.js 688 B
Newer Older
Greg Fodor's avatar
Greg Fodor committed
// Used for tracking and managing camera tools in the scene
Greg Fodor's avatar
Greg Fodor committed
AFRAME.registerSystem("camera-tools", {
Greg Fodor's avatar
Greg Fodor committed
  init() {
    this.cameraEls = [];
  },

  register(el) {
    this.cameraEls.push(el);
    el.addEventListener("ownership-changed", this._onOwnershipChange);
Greg Fodor's avatar
Greg Fodor committed
    this.myCamera = null;
Greg Fodor's avatar
Greg Fodor committed
  },

  deregister(el) {
    this.cameraEls = this.cameraEls.filter(c => c !== el);
    el.removeEventListener("ownership-changed", this._onOwnershipChange);
Greg Fodor's avatar
Greg Fodor committed
    this.myCamera = null;
Greg Fodor's avatar
Greg Fodor committed
  },

Greg Fodor's avatar
Greg Fodor committed
  getMyCamera() {
    if (this.myCamera) return this.myCamera;
    this.myCamera = this.cameraEls.find(NAF.utils.isMine);
    return this.myCamera;
Greg Fodor's avatar
Greg Fodor committed
  },

  _onOwnershipChange() {
Greg Fodor's avatar
Greg Fodor committed
    this.myCamera = null;
Greg Fodor's avatar
Greg Fodor committed
  }
});