Документация по JS-плагинам для BDEngine

Раздел в процессе написания и будет часто обновляться.

Важно: стабильным и официально поддерживаемым считается только API из window.editorAPI.

Объект window.editor доступен для изучения и экспериментов, но его структура может меняться без предупреждения и не гарантируется совместимость между версиями.

Доступ к редактору

Описание
window.editor (Внутренний нестабильный объект)

При вызове editorAPI.registerTranslations(namespace, ...) простые ключи автоматически получают префикс namespace плагина.

Например, ключ button, зарегистрированный под namespace my-plugin, станет ключом my-plugin.button. Весь экземпляр редактора доступен глобально как window.editor.

Этот объект полезен для изучения, отладки и продвинутых экспериментов, но не считается стабильным публичным API. Внутренние имена свойств и структура могут меняться между версиями без предупреждения.

Используйте window.editorAPI везде, где он позволяет решить задачу.

window.editorAPI (Официальный API для плагинов)

window.editorAPI - это официальная стабильная точка входа для плагинов.

Текущие публичные методы:

  • createWindow(...)
  • createModalWindow(...)
  • mergeContent(...)
  • add(...)
  • addObject(...)
  • addButtonDockMenu(...)
  • addButtonTool(...)
  • delete(...)
  • deleteSelected()
  • removeObject(...)
  • find(...)
  • getSelectedObjects()
  • getMeshes()
  • update(...)
  • registerTranslations(...)
Другие глобальные объекты

Помимо window.editor и window.editorAPI, плагины могут использовать несколько глобальных объектов, которые подготавливает редактор:

  • window.THREE - пространство имен Three.js, используемое редактором.
  • window.THREE.GLTFExporter - GLTF-экспортер, добавленный в THREE.
  • window.Selectable - базовый класс для выбираемых объектов редактора.
  • window.gT(key, fallback) - helper для перевода строк интерфейса.

Пример:

(() => {
    class ExampleSelectable extends Selectable {
        constructor(editor) {
            super(editor);

            const geometry = new THREE.BoxGeometry(1, 1, 1);
            const material = new THREE.MeshBasicMaterial({color: 0xff9900});
            const mesh = new THREE.Mesh(geometry, material);

            this.add(mesh);
            this.name = 'ExampleSelectable';
        }
    }
})();
Базовые возможности Selectable

Selectable - это базовый класс для объектов редактора, которые можно выделять и трансформировать.

Полезные методы и свойства:

  • setPosition({x, y, z}) / getPosition()
  • setRotation({x, y, z}) / getRotation()
  • setQuaternionRotation(quaternion)
  • setScale({x, y, z}) / getScale()
  • selected

Примечания:

  • setRotation(...) работает в градусах.
  • Для встроенных типов объектов редактора используйте editorAPI.add(...).
  • Для кастомных объектов плагина на базе Selectable используйте editorAPI.addObject(...).
Sign up to create and share content. Sign up
Студия
Сообщения
Войти
Обзор