gtMainSystem
abstract class : gtRefObject

Класс gtMainSystem это главный класс который управляет всеми подсистемами движка.
Для запуска движка нужно вызвать функцию gentle_create_main_system
auto ms = gentle_create_main_system();

Методы

gtMainSystem::addEvent
virtual void addEvent( const gtEvent& ev, u8 prior = 0u ) = 0;
Добавить событие в очередь. prior - не используется.

gtMainSystem::checkEventType
virtual bool checkEventType( const gtEvent& ev ) = 0;
Проверить нахождение события указанного типа в очереди.
Вернёт true если указанное событие есть в очереди.

gtMainSystem::checkEvent
virtual bool checkEvent( gtEvent& ev, bool(*compare_function)( gtEvent& current_event, gtEvent& user_event ) ) = 0;
Проверить нахождение события в очереди.
Второй параметр - указатель на функцию для детального сравнения.
Вернёт true если указанное событие есть в очереди.
bool compareEvent_callback_lmbDown( gtEvent& current_event, gtEvent& /*user_event*/ ){
return current_event.type == gtEventType::Mouse ? current_event.mouseEvent.isLeftButtonDown() : false;
}
...
gtEvent findEvent;
findEvent.type = gtEventType::Mouse;
if( m_mainSystem->checkEvent( findEvent, compareEvent_callback_lmbDown ) ){

gtMainSystem::createAudioSystem
virtual gtPtr<gtAudioSystem> createAudioSystem( const GT_GUID& uid ) = 0;
Загрузить аудио-плагин и запустить аудио-систему.
const GT_GUID& uid - уникальный id аудио плагина
Вернётся объект gtPtr который автоматически завершит работу плагина и аудио-системы при уничтожении.

gtMainSystem::createGraphicsSystem
virtual gtPtr<gtGraphicsSystem> createGraphicsSystem( const gtGraphicsSystemInfo& gsi, const GT_GUID& uid ) = 0;
Загрузить render-плагин и запустить графическую систему.
const gtGraphicsSystemInfo& gsi - параметры графической системы
const GT_GUID& uid - уникальный id графической системы
Вернётся объект gtPtr который автоматически завершит работу плагина и графической системы при уничтожении.

gtMainSystem::createMutex
virtual gtPtr<gtMutex> createMutex() = 0;
Создать объект синхронизации по поведению похожим на мьютекс.
Вернётся объект gtPtr который автоматически уничтожит объект при уничтожении.

gtMainSystem::createPhysicsSystem
virtual gtPtr<gtPhysicsSystem> createPhysicsSystem( const gtPhysicsSystemInfo& psi, const GT_GUID& uid ) = 0;
const gtPhysicsSystemInfo& gsi - параметры физического движка
const GT_GUID& uid - уникальный id физического движка
Вернётся объект gtPtr который автоматически завершит работу плагина и физического движка при уничтожении.

gtMainSystem::createScriptSystem
virtual gtPtr<gtScriptSystem> createScriptSystem( const GT_GUID& uid ) = 0;
Запустить модуль для работы со скриптовым языком.

gtMainSystem::createSystemWindow
virtual gtPtr<gtWindow> createSystemWindow( gtWindowInfo* wi ) = 0;
gtWindowInfo* wi - параметры окна.
Вернётся объект gtPtr который автоматически уничтожит окно при уничтожении.

gtMainSystem::createThread
virtual gtPtr<gtThread> createThread() = 0;
Создать объект для запуска нового "потока".
Вернётся объект gtPtr который автоматически войдёт в поток для ожидания его завершения (если он запущен) при уничтожении.

gtMainSystem::getCryptSystem
virtual gtCryptSystem* getCryptSystem() = 0;
Получить указатель на gtCryptSystem.

gtMainSystem::getCVarSystem
virtual gtCVarSystem* getCVarSystem() = 0;
Получить указатель на Console Variable систему.

gtMainSystem::getDebugRenderer
virtual gtDebugRenderer* getDebugRenderer() = 0;
Получить указатель на gtDebugRenderer.
В отличие от getGUISystem( gtGraphicsSystem * currentRenderDriver ), gtDebugRenderer использует метод getMainVideoDriver() для того чтобы знать каким драйвером рисовать информацию.
Данный способ тестируется, возможно, нужно оставить так, и указывать вручную текущий видео драйвер.

gtMainSystem::getDeviceCreationParameters
virtual const gtDeviceCreationParameters& getDeviceCreationParameters() = 0;
Получить параметры запуска движка.

gtMainSystem::getGeometrySystem
virtual gtGeometrySystem* getGeometrySystem() = 0;
Получить указатель на систему, которая занимается вопросами связанными с software моделью.
Например, для загрузки модели из файла, генерации 3D объектов и т.д.

gtMainSystem::getGUISystem
virtual gtGUISystem* getGUISystem( gtGraphicsSystem * currentRenderDriver ) = 0;
Получить указатель на GUI систему.
При первом вызове нужно передать указатель на gtGraphicsSystem.

gtMainSystem::getInstance
GT_API static gtMainSystem* getInstance();
Экспортируемая функция для получения указателя на главную систему gtMainSystem
Эта функция даёт доступ к движку из любой части программы.

gtMainSystem::getInputSystem
virtual gtInputSystem* getInputSystem() = 0;
Получить указатель на систему gtInputSystem

gtMainSystem::getLoadedVideoDriver
virtual gtGraphicsSystem*getLoadedVideoDriver( u32 id ) = 0;
Получить указатель на загруженную графическую систему
u32 id - id графической системы. Чтобы узнать количество запущенных систем нужно вызвать getLoadedVideoDriverCount
Архитектура движка позволяет запускать множество плагинов. Данный метод пока тестируется.

gtMainSystem::getLog
virtual gtLog* getLog() = 0;
Получить указатель на класс который занимается выводом информации в окно вывода или в файл.
Для простоты доступа к основным методам класса создан экспортируемый класс gtLogWriter.

gtMainSystem::getMainVideoDriver
virtual gtGraphicsSystem*getMainVideoDriver() = 0;
Получить указатель на основной gtGraphicsSystem.
Основной (текущий) gtGraphicsSystem используется в gtSceneSystem.

gtMainSystem::getMajorVersion
virtual u32 getMajorVersion() = 0;
Получить основной номер версии движка.

gtMainSystem::getMinorVersion
virtual u32 getMinorVersion() = 0;
Получить дополнительный номер версии движка.

gtMainSystem::getMatrixProjection
virtual const gtMatrix4& getMatrixProjection() = 0;
Получить активную проекционную матрицу.

gtMainSystem::getMatrixView
virtual const gtMatrix4& getMatrixView() = 0;
Получить активную видовую матрицу.

gtMainSystem::getMatrixWorld
virtual const gtMatrix4& getMatrixWorld() = 0;
Получить активную мировую матрицу.

gtMainSystem::getOutputWindow
virtual gtOutputWindow* getOutputWindow() = 0;
Получить указатель на окно вывода.

gtMainSystem::getPluginSystem
virtual gtPluginSystem* getPluginSystem() = 0;
Получить указатель на систему управляющая плагинами.

gtMainSystem::getRayFromScreen
virtual gtRayf32 getRayFromScreen( const gtVector2<s16>& coord, f32 len = 100.f ) = 0;
Вернёт отрезок проходящий из точки на экране в сторону far plane длинной len.

gtMainSystem::getSceneSystem
virtual gtSceneSystem* getSceneSystem( gtGraphicsSystem * currentRenderDriver ) = 0;
Получить указатель на менеджер сцены.
При первом вызове нужно передать указатель на активный видео-драйвер.

gtMainSystem::getSettings
virtual const gtSettings& getSettings() = 0;
Получить параметры времени выполнения.

gtMainSystem::getTime
virtual u32 getTime() = 0;
Получить время пройденное с момента запуска движка.

gtMainSystem::getTimer
virtual gtTimer* getTimer() = 0;
Получить указатель на менеджер времени.

gtMainSystem::isRun
virtual bool isRun() = 0;
Вернёт true если движок работает (не был послан сигнал на завершение работы).

gtMainSystem::loadImage
virtual gtPtr<gtImage> loadImage( const gtString& fileName ) = 0;
Загрузит картинку и вернёт указатель на gtImage.
Вернётся объект gtPtr который автоматически удалит картинку.
Движок определит расширение указанного файла, посмотрит, какой из доступных плагинов поддерживает это расширение, и будет использовать первый попавшийся плагин для загрузки.
Плагины по импорту изображений не загружаются пока не будут задействованы напрямую или вызовом этого метода.

gtMainSystem::loadImage
virtual gtPtr<gtImage> loadImage( const gtString& fileName, const GT_GUID& pluginGUID ) = 0;
Загрузит картинку и вернёт указатель на gtImage.
Вернётся объект gtPtr который автоматически удалит картинку.
Вторым параметром указывается uid нужного плагина для загрузки картинки.
Плагины по импорту изображений не загружаются пока не будут задействованы напрямую или вызовом этого метода.

gtMainSystem::pollEvent
virtual bool pollEvent( gtEvent& event ) = 0;
Пройдётся по очереди с событиями с их последующей обработкой.
Вернёт false когда событий бельше не будет.
gtEvent event;
while( mainSystem->update() ){
while( mainSystem->pollEvent( event ) ){
switch( event.type ){
case gtEventType::Keyboard:
if( event.keyboardEvent.isPressed( gtKey::K_ESCAPE ) )
mainSystem->shutdown();
break;

gtMainSystem::screenToWorld
virtual v4f screenToWorld( const gtVector2<s16>& coord ) = 0;
Конвертирует координаты курсора в 3D координату в пространстве.

gtMainSystem::setMainVideoDriver
virtual void setMainVideoDriver( gtGraphicsSystem* d ) = 0;
Установит основную(текущую) графическую систему.

gtMainSystem::setMatrixProjection
virtual void setMatrixProjection( const gtMatrix4& m ) = 0;
Установит основную(текущую) проекционную матрицу.

gtMainSystem::setMatrixView
virtual void setMatrixView( const gtMatrix4& m ) = 0;
Установит основную(текущую) видовую матрицу.

gtMainSystem::setMatrixWorld
virtual void setMatrixWorld( const gtMatrix4& m ) = 0;
Установит основную(текущую) мировую матрицу.

gtMainSystem::setSettings
virtual void setSettings( const gtSettings& ) = 0;
Установить параметры времени выполнения.

gtMainSystem::setTimer
virtual void setTimer( u32 milliseconds ) = 0;
Установит таймер, и при достижении нуля поступит событие о конце отсчёта.
ev.systemEvent.eventID == GT_EVENT_SYSTEM_TIMER

gtMainSystem::shutdown
virtual void shutdown() = 0;
Завершит работу движка. Пошлёт сигнал завершения, isRun и update будут возвращать false.

gtMainSystem::update
virtual bool update() = 0;
Обновляет состояние движка. Вернёт true если движок работает.

gtMainSystem::userData
virtual void userData( void * set, void ** get ) = 0;
Установить или получить пользовательские данные.
Если set != nullptr, то установка.