Введение в K5Engine (комментарии)
Это сообщение сгенерировано автоматически.
// проходил мимо и мне чуток не понятно..
"void Main();" и "App.Work();"
это одно и тоже ?
slatazan
Нет нет, не одно и тоже.
void Main() это метод, вызывающийся в цикле, который крутится в App.Work()
Код App.Work() выглядит так:
void TBaseApplication::Work() { while( LoopFlag){ Main( ); } }
void Main() - чисто виртуальная функция, она описывается в наследнике от абстрактного класса TBaseApplication.
При этом у базового класса TBaseApplication есть методы Start() и Stop() которые как раз и изменяют флаг LoopFlag.
Это всё сделано для того, что бы можно было использовать несколько "тел" игр в одном приложении, вот как пример:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nShowCmd) { try{ TApplication1 App1; TApplication1 App2; TApplication1 App3; App1.Init( ); App2.Init( ); App3.Init( ); App1.Work( ); App2.Work( ); App3.Work( ); App1.Quit( ); App2.Quit( ); App3.Quit( ); } catch( TBaseException &Ex){ Log( Ex); } return 0; }
Хотя справедливости ради можно сказать, что подобный подход я использовал только в одном проекте и больше к нему прибегать не приходилось.
Monax-At, код:
App1.Work(); App2.Work( ); App3.Work( );
похоже, подразумевает именно последовательное выполнение этих методов? Или есть какая-то возможность таким вот образом создать, к примеру, три окна и все их обрабатывать параллельно?
MoonStone
Нет, тут именно последовательная обработка. Просто пример как можно последовательно выполнить 3 разных "приложения" по завершению каждого.
Выведение нескольких окон в потоки, это отдельно надо делать.
Вообще двиг вызывает любопытство, но крайне мало организованной информации по нему. При современном загруженном рабочем графике выуживать подобную информацию только из заголовочных файлов хочется в последнюю очередь. Ждём более подробного описания функционала, возможностей движка, примеров. Поскольку движок, как я понял, исключительно графический, то крайне любопытно узнать именно про его скрытые механизмы работы с графикой: какая есть оптимизация вывода? Атласы? Как организована работа с ресурсами (есть ли фоновая их обработка)? Что с восстановлением устройств - каждый раз идёт подгрузка с диска или данные дублируются в памяти? Ну и великое множество других не заданных вопросов, на которые легче ответить несколькими примерами приложений. Ну или постараться написать как можно более развёрнутую документацию.
Удачи в разработке и поддержке своего детища!
MoonStone
Двиг не совсем графический, в нём есть и системы для построения логики и готовые функциональные элементы.
Вообще конечно хотелось бы сразу выложить и документацию, и примеры, но так уж вышло, что только недавно появилось свободное время, которое можно потратить на создание документов.
Сейчас как раз готовлю вторую статью про графическую систему двига, да и есть очень много всего, о чём можно и нужно рассказать.
MoonStone
Как уже сказал Сергей движок не совсем графический, в нем есть системы для постраения логики. Это Action и EventAction, дейсвтивия и событийные действия, как раз уже на базе этих элемнотов можно строить логику графического приложения.
Тема в архиве.