constructor()

in tensorflow_similarity/visualization/projector_v2/views/projector.ts [54:115]


  constructor(messenger: Messenger) {
    messenger.addOnMessage((message: Message) => {
      switch (message.type) {
        case InboundMessageType.UPDATE: {
          const updateMessage = message;
          this.updatePoints(updateMessage.mainPayload);
          break;
        }
        case InboundMessageType.METADATA: {
          const metadataMessage = message;
          this.setMetadata(metadataMessage.mainPayload);
          break;
        }
      }
    });

    const {canvas, container} = this.setupDom();
    this.container = container;

    this.renderer.setClearColor(0xffffff, 1);
    this.renderer.setPixelRatio(window.devicePixelRatio);

    this.scene.add(this.pointGroup);
    this.scene.add(new THREE.AxesHelper(Number.MAX_SAFE_INTEGER));

    this.settings.addSettingChangeListener((prev, next) => {
      if (!prev || prev.threeDimensions !== next.threeDimensions) {
        if (this.camera) {
          this.scene.remove(this.camera);
        }

        const {width, height} = container.getBoundingClientRect();
        if (next.threeDimensions) {
          this.camera = new THREE.PerspectiveCamera(
            55,
            width / height,
            1,
            20000
          );
          this.camera.position.set(30, 30, 100);
        } else {
          this.camera = new THREE.OrthographicCamera(
            -width / 2,
            width / 2,
            height / 2,
            -height / 2,
            -Number.MAX_SAFE_INTEGER,
            Number.MAX_SAFE_INTEGER
          );
        }
        this.scene.add(this.camera);

        if (!this.control) {
          this.control = new OrbitControls(this.camera, canvas);
        } else {
          this.control.object = this.camera;
        }
      }
    });

    anyWindow.requestIdleCallback(() => this.animate());
  }