API

API Подписки

Вам доступны подписки на некоторые события. 

Базовые методы подписок

ipano.on(eventName, handler)

Постоянная подписка на событие.

ipano.on("scenechange", (e) => {
  console.log("scenechange", e);
});

ipano.once(eventName, handler)

Разовая подписка: обработчик вызовется один раз и автоматически снимется.

ipano.once("scenerender", (e) => {
  console.log("Сцена отрисована", e.sceneId);
});

ipano.off(eventName, handler): void

Явное снятие подписки по ссылке на тот же handler.

function onReady(e) {
  console.log("ready", e);
}

ipano.on("ready", onReady);
ipano.off("ready", onReady);

Список событий

ready

Все скрипты готовы, движек панорам и API готовы принимать комманды API. Но, панорама еще не показана.
Событие отдает краткую информацию о туре и стартовую сцену.
{
  tour: {
    id: "ipoi3po", // id тура
    title: "Название тура"
  },
  initialSceneId: "scene-1" // стартовая сцена. 
}

started

тур стартовал, вызывается один раз. Только после этого события, можно включать аудио и видео на сцене.
{
  sceneId: "scene-1"
}

scenechange

Событие происходит, когда инициализирована смена сцены (переход на другую панораму), но сцена еще фактически не сменилась.
{
  fromSceneId: "scene-1",
  toSceneId: "scene-2"
}

scenerender

Сцена готова показывать первый кадр. Происходит и при старте тура и при переходах.
{
  sceneId: "scene-2"
}

viewchange

Смена положения камеры. Старайтесь не вешать тяжелые обработкичи на это событие, так как смена положения камеры, это очень частое явление.
{
  sceneId: "scene-2",
  view: {
    yaw: 10,
    pitch: -5,
    hfov: 100
  }
}

Специализированные подписки на объекты

ipano.watchObjectVisibility(objectId, handler)

Подписка на смену видимости объекта. Если объект в кадре, вызывается сразу

const offWatch = ipano.watchObjectVisibility("interactive:42", (e) => {
  console.log("visibility:", e.visible);
});

ipano.onObjectEnterView(objectId, handler)

Срабатывает, когда объект входит в поле зрения. Если уже виден на момент подписки, может вызваться сразу.

const offEnter = ipano.onObjectEnterView("interactive:42", (e) => {
  console.log("entered view:", e.objectId);
});

ipano.onObjectLeaveView(objectId, handler)

Срабатывает, когда объект уходит из поля зрения.

const offLeave = ipano.onObjectLeaveView("interactive:42", (e) => {
  console.log("left view:", e.objectId);
});