Relict Engine: Первая бинарная сборка 0.0.1 и DevLog 20250409
Перед началом работы с графикой решил поиграться с правилами CMake и попробовать собрать все в релизной конфигурации.
Что из этого получилось:
Движок собирается в пакет CMake, подключается стандартным образом через директиву find_package.
Поставляется в виде набора заголовочников, внешних библиотек (ThirdParty) и объектных (obj) библиотек самого движка. Почему именно объектных: Задумка следующая - программист сам выбирает как ему использовать движок (в виде DLL/so или собирать все в единый EXE/bin), и с какими конкретно модулями. Модули собраны в пространство имен CMake и подключаются довольно просто (потом напишу библиотеку для CMake чтобы еще больше это упростить), ну а пока это выглядит вот так:
Пока, конечно, все сыровато, есть вещи которые я в дальнейшем еще пересмотрю, но в целом работает.
Краткий список изменений:
Добавлен typedef TRelictClass на RelictClass
Теперь, вместо public RelictClass<Class, BaseClass, ClassFlags>::Type можно писать public TRelictClass<Class, BaseClass,ClassFlags> при оглашении игровых классов
Классы подсистемы вынесены на уровень выше в пространство имен Subsystems
Переработана работа SubsystemManager для удобства доступа к классу подсистемы
Теперь, для обращения к подсистеме нужно обращаться к менеджеру, а не к самому классу подсистемы: auto SS = SubsystemManager::Get<Subsystems::ScriptSubsystem>("ScriptSubsystem");
Исправлена работа функции FindObject со стороны Lua
После изменения регистранта Lua на UserData функция не была переписана. Упс.
Часть функций Виртуальной Машины Lua вынесены в глобальное пространство имен и больше не доступны для прямого вызова из вне.
Отключены стандартные библиотеки Lua за ислючением необходимого минимума.
Класс Application перенесен из модуля GameFramework в модуль Engine
Это было сделано, т.к. в бинарной сборке нарушался принцип наследования зависимостей.
Добавлены правила CMake для цели install

> (в виде DLL/so или собирать все в единый EXE/bin)
Для этого же используют .so .a файлы