Документация API плагинов

Плагины в Quark Engine представляют собой динамические библиотеки (DLL или .so), которые позволяют расширять функционал движка, создавать новые инструменты и модифицировать поведение сцены в реальном времени.

Быстрый старт

Каждый плагин должен экспортировать функцию get_plugin(). Это единственная точка входа, которую ищет движок.

#include "Plugin.h"

void on_update(PluginContext* ctx) {
    // Логика каждый кадр
}

PLUGIN_EXPORT Plugin* get_plugin() {
    static Plugin my_plugin = {
        "Example Plugin",
        "1.0.0",
        nullptr, // on_load
        nullptr, // on_unload
        on_update,
        nullptr  // on_draw_ui
    };
    return &my_plugin;
}

Жизненный цикл

on_load

Вызывается один раз при загрузке библиотеки. Используйте для инициализации ресурсов.

on_update

Вызывается каждый кадр перед рендерингом. Доступен delta_time для вычислений.

on_draw_ui

Специальный проход для отрисовки интерфейса плагина через встроенные функции UI.

on_unload

Вызывается перед выгрузкой плагина. Обязательно освободите всю выделенную память.

Функциональные возможности

Интерфейс (UI)

Движок предоставляет Immediate-mode UI систему:

  • ui_begin / ui_end — создание окон.
  • ui_button — обработка нажатий.
  • ui_slider_float — управление параметрами.
  • ui_color_edit3 — выбор цветов.

Работа с сущностями

Полный контроль над объектами в сцене:

  • Чтение: entity_get_position, get_name.
  • Мутация: entity_set_scale, set_rotation.
  • Управление: scene_spawn, scene_delete.
Внимание: Не сохраняйте указатель PluginContext между вызовами функций. Движок может пересоздавать контекст в каждом кадре для обновления данных о выделенных объектах и статистике.