|
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#2 |
Местный
Регистрация: 31.05.2008
Сообщений: 1,159
|
![]()
немножко текста для мододелов.
Концепция следующая: Вынесение всех вычислений касательно атмосферы в отдельный класс. Трудоемкие вычисления выносятся в отдельную dll с названием atmcom.dll, написанную на С++. Например: ветер можно реализовать как скалярное поле давлений или же векторное поле скоростей; спутный след и т.д. Пересчет будет производится в atmcom.dll, Atmosphere.class будет выступать посредником между игрой и atmcom.dll. Архитектура выполнена открытой и модульной: при необходимости каждый желающий может изменить необходимый модуль. В некоторых случаях, потребуется изменение других модулей. К моду прилагаются исходники. corep4.dll и zpdll.dll не имеют исходников, т.к. выполнены на ассемблере. Поэтому при внесении изменений в atmcom.dll или классы игры рекомендуется сохранять совместимость с данными dll-ками. Atmospehre.class напрямую не взаимодействует с данными длл-ками. Atmcom.dll взамодействует напрямую. Поэтому для сохранения работоспособности нельзя нарушать адресацию и параметры функций, к которым обращается zpdll.dll. Например, нельзя: добавлять новые глобальные переменные, менять порядок этих функций, а так же параметры вызова. В atmcom.dll специально оставлены свободные глобальные переменные. Описание схемы(см. вложение) Принцип работы следующий. При запуске(инициализации) игра вызывает Atmosphere.set(..) и Wind.set(…), который вызывает Atmosphere.set2(…), в котором рассчитываются и выставляются необходимые параметры атмосферы для java-class'a, а так же вызывается atmcom.dll/setatmparam, в котором рассчитываются и выставляются необходимые параметры в atmcom.dll. Установленные параметры используются при последующих расчетах. Во время расчета в реальном времени игра вызывает RealFlightmodel.update(), который вызывает Atmosphere.update(). Этот метод выполняет следующий функционал: вызывает обновление при каждом тике atmcom.dll/updateatm(..) и обновление с заданной частотой (раз в какой-то время, по умолчанию задано 30 сек) вызывает пересоздание облаков командой Mission.cur().createClouds(). Метод atmcom.dll/updateatm(..) выполняет обновление всех необходимых парамтеров, в т.ч. по умолчанию перерасчет смещения deltaX. Пересоздание облаков командой Mission.cur().createClouds() запускает сложный процесс в dll-ках игры, в том числе расчет координат в il2_corep4.dll. Полученные координаты облака перехватываются, передаются при помощи zpdll.dll в atmcom.dll/cloudx(),который вызывает atmcom.dll/updatecloudx(), где далее производится расчет новых координат и отправка обратно. По умолчанию, к текущей координате облака прибавляется смещение deltaX. Последний раз редактировалось ZloyPetrushkO; 17.03.2013 в 22:33. |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|