9

LOL Engine день 3

Серия LOL Engine

Всем привет.

Из комментов в прошлых постах я кое что изменил. Огромное спасибо всем, кто помогает мне учиться:

Переделал структуру на гите и вынес include по совету из коммента

Include статической библиотеки

Include статической библиотеки

Взял spdlog для логов. Пока не оборачивал - сделаю позже.

Убрал Timer и this_thread::sleep

переделанный основной цикл

переделанный основной цикл

Как советовали, вместо того, чтобы заниматься фигней и получать состояние выполнения bool, сделал возврат состояния EXIT_SUCCESS/EXIT_FAILURE прямо из Application, ну и убрал все инициализации в конструктор

int main стал аккуратнее

int main стал аккуратнее

Структура проекта больше похожа на другие проекты на гите:

src / include / thirdparty / example (куда убрал базовый проект. Он пока пустоват. Займусь)

Более аккуратная структура

Более аккуратная структура

Инициализация запускаемого проекта проходит теперь через два extern.

Один прокидывает настройки приложения (разрешение, название, лимит кадров, название стартовой сцены)

Второй регистрирует сцены в SceneManager

Ну и удалил бгмерзский ServiceProvider. Это была ну ооочень плохая идея. Возможно, не буду изобретать велосипед, а просто возьму потом какую-нибудь DI библиотеку типа Boost.DI

Основной работы прибавилось, так что занимаюсь пет-проектом пореже. Спасибо всем кто участвует и помогает!

Ссылка на пустоватый репозиторий

1
Автор поста оценил этот комментарий
И вновь привет.
frameTimeLimit optional? Может, просто нулем если нет лимита?
Рекомендую сразу Update поделить на Update + before, post и подобные. В будущем сильно пригодится.
Так и не понял, зачем extern функции, ну да и ладно.
В Application Loop и в Start и в Init.
Для spdlog, всё-таки рекомендую написать пару define-ов для warn/err и тп. Потом проще на свой заменить будет.
Нет возможности прокинуть свои хинты для создания окна.
Если нет сцены, может, просто пустое окно выдавать?
GlfwForward - отличная идея. Вообще, можно glfw в какой-то удобный класс обернуть, в будущем, при чём в скором, пригодится. Пока накинуть в этот класс создание, ресайз, ивенты, закрытие. Пока этого хватит.
У application эт же не Start а Exec. Т.к это функция отбирает поток управления, пока не завершится.
С cross-platform в Readme посмеялся)
В подпроекты на Cmake вы проиграли. Стоит погуглить как нормально сделать, а то каждая попытка - занятный перл) Build interface на уровень выше - мега странно.
Так, мажорных доебов нет, уже выглядит как задел на что-то великое.
Дерзайте)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Про Update уже тоже подумал. Как у Юней.

extern чтобы точку входа статической библиотеки соединить с исполняемым проектом. Делать int main в исполняемом проекте ну ппц как не хочется. Подумаю, может придет в голову более мудрое решение. К примеру объявлю класс со всеми нужными функциями настройки, который буду реализовывать в исполняемом проекте. Подумаю, в общем.

То-же будет касаться и прокидывания хинтов и прочего (пока расширение информации прокидываемой в статическую библиотеку происходит за счет расширения структуры sApplicationSettings)

Хорошую вещь про glfwForward сказали - инкапсулирую все это в класс Window, а то вдруг идея в голову придет на мобилки запустить без всякого glfw.

Start поменял на Execute. Это я тоже промахнулся, конечно :) Спасибо за подсказку

На тему cross-plarform - если Вы на винде сидите, скажите, оно хоть запускается? :D Parallels со мной дружить не хочет ну совсем никак, чтобы виртуальную машину собрать.

CMake - вообще боль моего ректума. Вроде и собирается и запускается, но чего-то я в нем не пойму упорно... Ощущение будто, goto написал :(

В очередной раз - огромное спасибо. На Ваших советах и развиваюсь по сути. Вот и вред того, что 10 лет в одну маску без фидбэка код пишу :D

ЗЫ: Меня еще немного gmaplayForward.hpp волнует, а точнее RegisterSceneType

Вот этот extern работает, но что-то меня смущает... будто через лишний костыль я это делаю (скришот). Все пытался прийти к чему-то вроде

void RegisterScenes(RegisterCallbackT registerCallback){

registerCallback<MainScene>();

}

Но так и не получилось

Иллюстрация к комментарию
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества