Newer
Older
AegisforEcosystem / next / AR.js-3.4.0 / three.js / src / new-api / arjs-debugui.js
@KAOKA Daisuke KAOKA Daisuke on 31 May 2022 5 KB into AR.js
import MarkersAreaUtils from "../markers-area/arjs-markersareautils";
import Context from "../threex/arjs-context"; // TODO context build-dependent

/**
 * Create an debug UI for an ARjs.Anchor
 *
 * @param {ARjs.Anchor} arAnchor - the anchor to user
 */
const SessionDebugUI = function (arSession) {
  var trackingBackend = arSession.arContext.parameters.trackingBackend;

  this.domElement = document.createElement("div");
  this.domElement.style.color = "rgba(0,0,0,0.9)";
  this.domElement.style.backgroundColor = "rgba(127,127,127,0.5)";
  this.domElement.style.display = "block";
  this.domElement.style.padding = "0.5em";
  this.domElement.style.position = "fixed";
  this.domElement.style.left = "5px";
  this.domElement.style.bottom = "10px";
  this.domElement.style.textAlign = "right";

  //////////////////////////////////////////////////////////////////////////////
  //		current-tracking-backend
  //////////////////////////////////////////////////////////////////////////////

  var domElement = document.createElement("span");
  domElement.style.display = "block";
  domElement.innerHTML = "<b>trackingBackend</b> : " + trackingBackend;
  this.domElement.appendChild(domElement);
};

/**
 * Url of augmented-website service - if === '' then dont include augmented-website link
 * @type {String}
 */
SessionDebugUI.AugmentedWebsiteURL = "https://webxr.io/augmented-website";

//////////////////////////////////////////////////////////////////////////////
//		AnchorDebugUI
//////////////////////////////////////////////////////////////////////////////

/**
 * Create an debug UI for an ARjs.Anchor
 *
 * @param {ARjs.Anchor} arAnchor - the anchor to user
 */
const AnchorDebugUI = function (arAnchor) {
  var arSession = arAnchor.arSession;
  var trackingBackend = arSession.arContext.parameters.trackingBackend;

  this.domElement = document.createElement("div");
  this.domElement.style.color = "rgba(0,0,0,0.9)";
  this.domElement.style.backgroundColor = "rgba(127,127,127,0.5)";
  this.domElement.style.display = "inline-block";
  this.domElement.style.padding = "0.5em";
  this.domElement.style.margin = "0.5em";
  this.domElement.style.textAlign = "left";

  //////////////////////////////////////////////////////////////////////////////
  //		current-tracking-backend
  //////////////////////////////////////////////////////////////////////////////

  var domElement = document.createElement("span");
  domElement.style.display = "block";
  domElement.style.padding = "0.5em";
  domElement.style.color = "rgba(0,0,0,0.9)";
  domElement.style.backgroundColor = "rgba(127,127,127,0.5)";
  domElement.style.position = "fixed";
  domElement.style.left = "5px";
  domElement.style.bottom = "40px";

  this.domElement.appendChild(domElement);
  domElement.innerHTML =
    "<b>markersAreaEnabled</b> :" + arAnchor.parameters.markersAreaEnabled;

  //////////////////////////////////////////////////////////////////////////////
  //		toggle-marker-helper
  //////////////////////////////////////////////////////////////////////////////

  if (arAnchor.parameters.markersAreaEnabled) {
    var domElement = document.createElement("button");
    domElement.style.display = "block";
    this.domElement.style.padding = "0.5em";
    this.domElement.style.position = "fixed";
    this.domElement.style.textAlign = "left";
    this.domElement.appendChild(domElement);

    domElement.id = "buttonToggleMarkerHelpers";
    domElement.innerHTML = "toggle-marker-helper";
    domElement.href = "javascript:void(0)";

    var subMarkerHelpersVisible = false;
    domElement.addEventListener("click", function () {
      subMarkerHelpersVisible = subMarkerHelpersVisible ? false : true;
      arAnchor.markersArea.setSubMarkersVisibility(subMarkerHelpersVisible);
    });
  }

  //////////////////////////////////////////////////////////////////////////////
  //		Learn-new-marker-area
  //////////////////////////////////////////////////////////////////////////////

  if (arAnchor.parameters.markersAreaEnabled) {
    var domElement = document.createElement("button");
    domElement.style.display = "block";
    this.domElement.appendChild(domElement);

    domElement.id = "buttonMarkersAreaLearner";
    domElement.innerHTML = "Learn-new-marker-area";
    domElement.href = "javascript:void(0)";

    domElement.addEventListener("click", function () {
      if (AnchorDebugUI.MarkersAreaLearnerURL !== null) {
        var learnerURL = AnchorDebugUI.MarkersAreaLearnerURL;
      } else {
        var learnerURL =
          Context.baseURL + "examples/multi-markers/examples/learner.html";
      }
      MarkersAreaUtils.navigateToLearnerPage(learnerURL, trackingBackend);
    });
  }

  //////////////////////////////////////////////////////////////////////////////
  //		Reset-marker-area
  //////////////////////////////////////////////////////////////////////////////

  if (arAnchor.parameters.markersAreaEnabled) {
    var domElement = document.createElement("button");
    domElement.style.display = "block";
    this.domElement.appendChild(domElement);

    domElement.id = "buttonMarkersAreaReset";
    domElement.innerHTML = "Reset-marker-area";
    domElement.href = "javascript:void(0)";

    domElement.addEventListener("click", function () {
      MarkersAreaUtils.storeDefaultMultiMarkerFile(trackingBackend);
      location.reload();
    });
  }
};

/**
 * url for the markers-area learner. if not set, take the default one
 * @type {String}
 */
AnchorDebugUI.MarkersAreaLearnerURL = null;

export { SessionDebugUI, AnchorDebugUI };