Показать сообщение отдельно
Старый 14.02.2013, 02:30   #2
ZloyPetrushkO
Местный
 
Регистрация: 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.
Вложения
Тип файла: rar atm_scheme.rar (10.0 Кб, 428 просмотров)

Последний раз редактировалось ZloyPetrushkO; 17.03.2013 в 22:33.
ZloyPetrushkO вне форума   Ответить с цитированием