SkyXEngine  0.9.3
3D real-time render
Общая информация о библиотеках

Общие правила библиотек

Каждая функция в библиотеках имеет префикс с именем самой библиотеки которое формируется исходя из назначения. После следует символ _ после которого (желательно) указывается имя объекта/подсистемы/подмодуля если имеется.
Все функции имя которых после _ начинается с 0 можно вызывать без инициализации самой библиотеки, все остальные можно вызывать только после инициализации.
Набор стандартных функций с 0:

  • 0GetVersion – возвращает номер версии текущей библиотеки.
  • 0Create – инициализирует текущую библиотеку.

Функция Dbg_Set переназначает стандартную функцию вывода сообщений, и доступна в любой момент времени, независимо от инициализации библиотеки.
Функции имя которых после _ начинается с A являются начальными, и могут быть вызваны только после того как библиотека была инициализирована.
Набор стандартны функций с A:

  • AGetName – получить имя текущей инициализированной библиотеки, которое было указано при инициализации.
  • AKill – уничтожить инициализированную библиотеку.

Каждая инициализированная библиотека должна иметь имя, уникальное или нет задается в момент вызова инициализации исходя из нужд программиста.
Каждая библиотека также может называться подсистема, в некоторых случаях ядро.
Для подключения любой библиотеки (в виде заголовочного файла либо исходного кода) осуществляется посредством подключения в проект всего одного файла с кодом:

  • для подключения внешней библиотеки (dll) нужно подключить заголовочный файл с расширением h а также файл с для экспорта функций с расширением lib.
  • для подключения исходного кода библиотеки достаточно подключить только cpp файл с исходным кодом.

Имена заголовочного и файла с исходным кодом одинаковые и отражают назначение самой библиотеки. К примеру sxgcore – графическое ядро, sxinput – система ввода (клавиатура/мышь), sxpp – библиотека с постпроцессом и т.д.

Начальный базовый интерфейс IBaseObject

Начальным родителем всех интерфейсов является базовый интерфейс IBaseObject, который объявлен в файле gdefines.h и имеет следующий вид:

{
virtual ~IBaseObject(){};
virtual void Release()=0;
};

Система вывода сообщений в библиотеках

Во всех библиотеках предусмотрена система вывода сообщений через единую функцию. По умолчанию все сообщения выводятся через стандартную функцию def_report, объявленную в gdefines.h.
Стандартная функция имеет ограничение на длину сообщения которое регулируется макроопределением REPORT_MSG_MAX_LEN объявленном в gdefines.h. При написании своего обработчика сообщений следует использовать данное ограничение.
Уровни критичности сообщений объявлены в gdefines.h:

В случае переназначения стандартной функции сообщений необходимо самостоятельно(в переназначаемой функции) обрабатывать уровни критичности, для примера можно использовать механизм стандартной функции.
Тип функции для сообщений:

Каждая библиотека имеет функцию для переназначения стандартной функции сообщений на пользовательскую. Пример основного ядра:

Данная функция может вызываться в любой момент времени, инициализация библиотеки необязательна.
Для формирования строки вида полный_путь_до_файла : номер_текущей_строки можно воспользоваться макроопределением gen_msg_location объявленной в gdefines.h.

Ограничения на размеры

  • CORE_NAME_MAX_LEN - максимальная длина имени объекта ядра/подсистемы
  • OBJECT_NAME_MAX_LEN - максимальная длина имени абстрактного объекта
  • CONFIG_SECTION_MAX_LEN - максимальная длина секции конфигурационного файла

Под абстрактным объектом следует понимать обобщенные элементы движка, к примеру имя статической модели, имя источника света и прочее.

Макроопределения

Данные макроопределения необходимо использовать только по назначению и они являются обязательными к использовнаию.

  • SX_EXE - данный проект исполняемый файл
  • SX_DLL - данный проект dll бибилиотека
  • SX_LEVEL_EDITOR - данный проект "редактор уровней"
  • SX_MATERIAL_EDITOR - данный проект "редактор материалов"
  • SX_PARTICLES_EDITOR - данный проект "редактор частиц"
  • SX_GAME - данный проект "билд"