Пару дней назад сдуру удалил файл МиГ-23БН. Теперь вот думаю, а может не сдуру. Как сказал Диего Марадона, забив мяч англичанам рукой: "Мою руку направлял сам Бог". Учитывая, что совсем недавно перед этим матчем Аргентина огребла от британцев на фолклендских, то бишь Мальвинских островах, кое-какие основания для этих слов у него были (обида аргентинцев не прошла с тех пор). Ну, может быть, мою руку направляла Высокое Небо (читаем Валентинова). В том файле содержался начатый мною стартовый класс для семейства МиГ-23 и МиГ-27. Обычно я всегда проверяю содержимое корзины перед удалением, но тут почему-то не стал. Может, к лучшему.
Позавчера я этот файл восстановил, вчера написал класс FLG_, то бишь FLOGGER_, в котором помимо расстановки вооружения, указал конкретные технические характеристики для разных модификаций. Какие-то модификации почти не отличаются, какие-то отличаются сильно. я бы не сказал, что файл полностью закончен, потому что в нем пока отсутствуют характеристики БРЭО, вроде дальности действия радара, его угла обзора, времени сканирования и пр.
Тем не менее, прописывание всего этого заняло весь день, потому что везде надо было менять own на self, прописывать другие имена и тому подобное. В несколько приемов я с этим справился. Та же участь ждет остальные модули первой версии для МиГ-29, Су-25, F-15, F-16 и F-5. Про модули для новых машин я не говорю, потому что добавляться они будут с новыми машинами. вообще же класс FLG_ выглядит примерно так:
стартовые характеристики:
class FLG_(bge.types.KX_GameObject):
def __init__(self, old_owner):
if self.parent.parent['unitName'] in ['MiG-23MF','MiG-23M']:
#Если этот юнит управляется игроком, то выставляем камеру пилота в кабине в нужную позицию
if.self.parent.parent['bot'] == 0:
Gor = scene.objects["Gor"]
Gor.localPosition = [0.0, 3.0, 0.56]
if 'PilotObj' not in bge.logic.globalDict['listLoadObj']:
#Вызов и установка фигуры пилота
bge.logic.LibLoad('//Aircraft/PilotObj.blend', 'Scene', load_actions = False)
bge.logic.globalDict['listLoadObj'].append('PilotObj')
pilot = scene.addObject('PilotRus', self.parent)
pilot.setParent(self.parent, False, False)
pilot.localPosition = [0.0, 2.85, 0.25]
#Пушка ГШ-6-30 для МиГ-27
if 'MiG-27' in self.parent.parent['unitName']:
pushka = scene.addObject('UniversalMesh', self.parent)
pushka['meshes'] = 'GSh630'
pushka.setParent(self.parent, False, False)
pushka.localPosition = [0.0,1.4,-0.675]
#Вначале выдаем ограничения по маневренности, высотности, скорости и прочим ТХ
self.parent.parent['speedMax'] = 694 #максимальная скорость
self.parent.parent['heightMax'] = 17500 #потолок
self.parent.parent['MaxPower'] = 12.5 #максимальная тяга двигателя
self.parent.parent['speedVert'] = 220 #максимальная вертикальная скорость
self.parent.parent['angX'] = 0.8 #максимальная угловая скорость тангажа
self.parent.parent['angY'] = 1.3 #максимальная угловая скорость крена
self.parent.parent['angZ'] = 0.3 #максимальная угловая скорость рыска
self.parent.parent['rotatDyn'] = 0.1 #динамичность угловых скоростей
self.parent.parent['dvigDyn'] = 4 #динамичность двигателя
self.parent.parent['speedDyn'] = 5 #динамичность скорости
self.parent.parent['startSpeed'] = 1.0 #стартовый коэффициенот скорости
self.parent.parent['maxFuelSpeed'] = 1.8 #максимальный расход топлива кг в секунду
self.parent.parent['massFuelOwn'] = 4090 #внутренний запас топлива
self.parent.parent['unitChassy'] = 'E_' #тип шасси
self.parent.parent['ownECM'] = 0.1 #встроенная система РЭБ - эффективность
elif self.parent.parent['unitName'] == 'MiG-23MS':
#Вначале выдаем ограничения по маневренности, высотности, скорости и прочим ТХ
self.parent.parent['speedMax'] = 694 #максимальная скорость
self.parent.parent['heightMax'] = 17500 #потолок
self.parent.parent['MaxPower'] = 12.5 #максимальная тяга двигателя
self.parent.parent['speedVert'] = 220 #максимальная вертикальная скорость
self.parent.parent['angX'] = 0.8 #максимальная угловая скорость тангажа
self.parent.parent['angY'] = 1.3 #максимальная угловая скорость крена
self.parent.parent['angZ'] = 0.3 #максимальная угловая скорость рыска
self.parent.parent['rotatDyn'] = 0.12 #динамичность угловых скоростей
self.parent.parent['dvigDyn'] = 4 #динамичность двигателя
self.parent.parent['speedDyn'] = 5 #динамичность скорости
self.parent.parent['startSpeed'] = 1.0 #стартовый коэффициенот скорости
self.parent.parent['maxFuelSpeed'] = 1.8 #максимальный расход топлива кг в секунду
self.parent.parent['massFuelOwn'] = 4590 #внутренний запас топлива
self.parent.parent['unitChassy'] = 'E_' #тип шасси
self.parent.parent['ownECM'] = 0.05 #встроенная система РЭБ - эффективность
elif self.parent.parent['unitName'] == 'MiG-23BN':
#Вначале выдаем ограничения по маневренности, высотности, скорости и прочим ТХ
self.parent.parent['speedMax'] = 694 #максимальная скорость
self.parent.parent['heightMax'] = 18500 #потолок
self.parent.parent['MaxPower'] = 12.5 #максимальная тяга двигателя
self.parent.parent['speedVert'] = 220 #максимальная вертикальная скорость
self.parent.parent['angX'] = 0.8 #максимальная угловая скорость тангажа
self.parent.parent['angY'] = 1.3 #максимальная угловая скорость крена
self.parent.parent['angZ'] = 0.3 #максимальная угловая скорость рыска
self.parent.parent['rotatDyn'] = 0.13 #динамичность угловых скоростей
self.parent.parent['dvigDyn'] = 4 #динамичность двигателя
self.parent.parent['speedDyn'] = 5 #динамичность скорости
self.parent.parent['startSpeed'] = 1.0 #стартовый коэффициенот скорости
self.parent.parent['maxFuelSpeed'] = 1.8 #максимальный расход топлива кг в секунду
self.parent.parent['massFuelOwn'] = 4590 #внутренний запас топлива
self.parent.parent['unitChassy'] = 'E_' #тип шасси
self.parent.parent['ownECM'] = 0.05 #встроенная система РЭБ - эффективность
Здесь отнюдь не все модификации - а то слишком много места уйдет. А теперь кусочек кода по вооружению:
#Генерация вооружения
if self.point9 != 'pusto':
#Добавление топливных баков
if self.point0 in ['FuelTank-1','FuelTank-3']:
ptbCnt = scene.addObject('UniversalMesh', self)
ptbCnt['meshes'] = 'FLG_FuelTank_Center_'
ptbCnt['fuel'] = 800.0
ptbCnt.setParent(self.parent, False, False)
ptbCnt.localPosition = [0.0,-1.13,-1.04]
if self.point0 in ['FuelTank-2','FuelTank-3']:
#Левый подвесной бак
ptbL = scene.addObject('UniversalMesh', self)
ptbL['meshes'] = 'FLG_FuelTank_Wing_'
ptbL['fuel'] = 800.0
ptbL.setParent(self.parent, False, False)
ptbL.localPosition = [-2.67,-1.76,-0.1]
#Правый подвесной бак
ptbR = scene.addObject('UniversalMesh', self)
ptbR['meshes'] = 'FLG_FuelTank_Wing_'
ptbR['fuel'] = 800.0
ptbR.setParent(self.parent, False, False)
ptbR.localPosition = [2.67,-1.76,-0.1]
#Генерация вооружения
if self.point1 != 'pusto':
#Добавление оружия
#Ракеты средней дальности для МиГ-23
if self.point1 in ['R-23R+R-23T','R-24R+R-24T','R-24RM+R-24T','R-24R','R-23R','R-24RM','R-24T','R-23T']:
#Пилон стандартный для всех вариантов
pilon1 = scene.addObject('UniversalMesh', self)
pilon1.setParent(own, False, False)
pilon1['meshes'] = 'FLG_APU23_'
#Ракет две штуки всегда, расположение - одинаковое
weaponMesh1newObject1 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject1.setParent(self, False, False)
weaponMesh1newObject2 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject2.setParent(self, False, False)
weaponMesh1newObject1.localPosition = [-1.428,-2.0,0.03]
weaponMesh1newObject1.applyRotation([-0.035,0.0,0.0],True)
weaponMesh1newObject2.localPosition = [1.428,-2.0,0.03]
weaponMesh1newObject2.applyRotation([-0.035,0.0,0.0],True)
if self.point1 in ['R-24R','R-23R','R-24RM','R-24T','R-23T']:
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = self.point1
#При симметричной подвеске нет вопросов и по второй ракете
weaponMesh1newObject2['weapon'] = 1
weaponMesh1newObject2['meshes'] = self.point1
#Смешанная подвеска
elif self.point1 == 'R-23R+R-23T':
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = 'R-23R'
#При смешанной подвеске вторая ракета получает другие значения проперти и меша
weaponMesh1newObject2['weapon'] = 3
weaponMesh1newObject2['meshes'] = 'R-23T'
elif self.point1 == 'R-24R+R-24T':
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = 'R-24R'
#При смешанной подвеске вторая ракета получает другие значения проперти и меша
weaponMesh1newObject2['weapon'] = 3
weaponMesh1newObject2['meshes'] = 'R-24T'
elif self.point1 == 'R-24RM+R-24T':
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = 'R-24RM'
#При смешанной подвеске вторая ракета получает другие значения проперти и меша
weaponMesh1newObject2['weapon'] = 3
weaponMesh1newObject2['meshes'] = 'R-24T'
#Ракеты Р-3Р, Р-3С, Р-13М и Р-13М1
elif self.point1 in ['R-3R','R-3S','R-13M','R-13M1']:
weaponMesh1newObject1 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject1.setParent(self, False, False)
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = self.point1
weaponMesh1newObject2 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject2.setParent(self, False, False)
weaponMesh1newObject2['weapon'] = 1
weaponMesh1newObject2['meshes'] = self.point1
#Это расположение ракет на пилонах МиГ-23
if 'MiG-23' in self.parent.parent['unitName']:
weaponMesh1newObject1.localPosition = [-1.428,-1.57,0.027]
weaponMesh1newObject1.applyRotation([-0.0175,0.0,0.0],True)
weaponMesh1newObject2.localPosition = [1.428,-1.57,0.027]
weaponMesh1newObject2.applyRotation([-0.0175,0.0,0.0],True)
pilon1 = scene.addObject('UniversalMesh', self)
pilon1.setParent(self, False, False)
pilon1['meshes'] = 'FLG_APU13W'
#Расположение ракет на МиГ-27 чуть отличается плюс другой пилон
elif 'MiG-27' in self.parent.parent['unitName']:
weaponMesh1newObject1.localPosition = [-1.428,-1.57,-0.02]
weaponMesh1newObject1.applyRotation([-0.0175,0.0,0.0],True)
weaponMesh1newObject2.localPosition = [1.428,-1.57,0.02]
weaponMesh1newObject2.applyRotation([-0.0175,0.0,0.0],True)
pilon1 = scene.addObject('UniversalMesh', self)
pilon1.setParent(self, False, False)
pilon1['meshes'] = 'FLG_APU3W_'
Несколько длинновато, ну ладно, пускай на всякий случай будет.
Как видно из написанного, в обязательном порядке добавляется фигура летчика, а для МиГ-27 еще и пушка ГШ-630. Кроме того, с течением времени добавятся блоки выброса помех, контейнеры РЭБ, и другое вооружение, вроде никак не доделываемых мною УРВЗ Х-25.
Все это - одноразовая функция, исполняемая объектом Generator, с коротким временм жизни, двойной parent - это родитель его родителя (дедушка, сатло быть, хе-хе) - сам двигатель юнита. вот, значит, внучок, дедушку жизни учит... Проставляя ему свойства, прописанные в классе. Вся эта бюрократия, хотя и весьма объемна, но необходима. могу только сказать, что в том же WoE подобных перечислений на порядок больше. Хотя, может стоит брать все данные из текстовых файлов? я просто не знаю, открытый, а потом закрытый текстовый файл загружает память или нет...
В общем, пока так обстоят дела. Картинок пока новых нет, так что остается только текст.
P.S. Сейчас видел забавное поведение вороны, прилетевшей на огород - попить ей, видите ли захотелось. Четыре ведра, одно закрытое. По очереди отпила из КАЖДОГО ОТКРЫТОГО. Видимо, думала, что в разных ведрах вода разной степени вкусности. Потом некоторое время поизучала закрытое и улетела. Видимо, решила, что там та же самая вода...
Позавчера я этот файл восстановил, вчера написал класс FLG_, то бишь FLOGGER_, в котором помимо расстановки вооружения, указал конкретные технические характеристики для разных модификаций. Какие-то модификации почти не отличаются, какие-то отличаются сильно. я бы не сказал, что файл полностью закончен, потому что в нем пока отсутствуют характеристики БРЭО, вроде дальности действия радара, его угла обзора, времени сканирования и пр.
Тем не менее, прописывание всего этого заняло весь день, потому что везде надо было менять own на self, прописывать другие имена и тому подобное. В несколько приемов я с этим справился. Та же участь ждет остальные модули первой версии для МиГ-29, Су-25, F-15, F-16 и F-5. Про модули для новых машин я не говорю, потому что добавляться они будут с новыми машинами. вообще же класс FLG_ выглядит примерно так:
стартовые характеристики:
class FLG_(bge.types.KX_GameObject):
def __init__(self, old_owner):
if self.parent.parent['unitName'] in ['MiG-23MF','MiG-23M']:
#Если этот юнит управляется игроком, то выставляем камеру пилота в кабине в нужную позицию
if.self.parent.parent['bot'] == 0:
Gor = scene.objects["Gor"]
Gor.localPosition = [0.0, 3.0, 0.56]
if 'PilotObj' not in bge.logic.globalDict['listLoadObj']:
#Вызов и установка фигуры пилота
bge.logic.LibLoad('//Aircraft/PilotObj.blend', 'Scene', load_actions = False)
bge.logic.globalDict['listLoadObj'].append('PilotObj')
pilot = scene.addObject('PilotRus', self.parent)
pilot.setParent(self.parent, False, False)
pilot.localPosition = [0.0, 2.85, 0.25]
#Пушка ГШ-6-30 для МиГ-27
if 'MiG-27' in self.parent.parent['unitName']:
pushka = scene.addObject('UniversalMesh', self.parent)
pushka['meshes'] = 'GSh630'
pushka.setParent(self.parent, False, False)
pushka.localPosition = [0.0,1.4,-0.675]
#Вначале выдаем ограничения по маневренности, высотности, скорости и прочим ТХ
self.parent.parent['speedMax'] = 694 #максимальная скорость
self.parent.parent['heightMax'] = 17500 #потолок
self.parent.parent['MaxPower'] = 12.5 #максимальная тяга двигателя
self.parent.parent['speedVert'] = 220 #максимальная вертикальная скорость
self.parent.parent['angX'] = 0.8 #максимальная угловая скорость тангажа
self.parent.parent['angY'] = 1.3 #максимальная угловая скорость крена
self.parent.parent['angZ'] = 0.3 #максимальная угловая скорость рыска
self.parent.parent['rotatDyn'] = 0.1 #динамичность угловых скоростей
self.parent.parent['dvigDyn'] = 4 #динамичность двигателя
self.parent.parent['speedDyn'] = 5 #динамичность скорости
self.parent.parent['startSpeed'] = 1.0 #стартовый коэффициенот скорости
self.parent.parent['maxFuelSpeed'] = 1.8 #максимальный расход топлива кг в секунду
self.parent.parent['massFuelOwn'] = 4090 #внутренний запас топлива
self.parent.parent['unitChassy'] = 'E_' #тип шасси
self.parent.parent['ownECM'] = 0.1 #встроенная система РЭБ - эффективность
elif self.parent.parent['unitName'] == 'MiG-23MS':
#Вначале выдаем ограничения по маневренности, высотности, скорости и прочим ТХ
self.parent.parent['speedMax'] = 694 #максимальная скорость
self.parent.parent['heightMax'] = 17500 #потолок
self.parent.parent['MaxPower'] = 12.5 #максимальная тяга двигателя
self.parent.parent['speedVert'] = 220 #максимальная вертикальная скорость
self.parent.parent['angX'] = 0.8 #максимальная угловая скорость тангажа
self.parent.parent['angY'] = 1.3 #максимальная угловая скорость крена
self.parent.parent['angZ'] = 0.3 #максимальная угловая скорость рыска
self.parent.parent['rotatDyn'] = 0.12 #динамичность угловых скоростей
self.parent.parent['dvigDyn'] = 4 #динамичность двигателя
self.parent.parent['speedDyn'] = 5 #динамичность скорости
self.parent.parent['startSpeed'] = 1.0 #стартовый коэффициенот скорости
self.parent.parent['maxFuelSpeed'] = 1.8 #максимальный расход топлива кг в секунду
self.parent.parent['massFuelOwn'] = 4590 #внутренний запас топлива
self.parent.parent['unitChassy'] = 'E_' #тип шасси
self.parent.parent['ownECM'] = 0.05 #встроенная система РЭБ - эффективность
elif self.parent.parent['unitName'] == 'MiG-23BN':
#Вначале выдаем ограничения по маневренности, высотности, скорости и прочим ТХ
self.parent.parent['speedMax'] = 694 #максимальная скорость
self.parent.parent['heightMax'] = 18500 #потолок
self.parent.parent['MaxPower'] = 12.5 #максимальная тяга двигателя
self.parent.parent['speedVert'] = 220 #максимальная вертикальная скорость
self.parent.parent['angX'] = 0.8 #максимальная угловая скорость тангажа
self.parent.parent['angY'] = 1.3 #максимальная угловая скорость крена
self.parent.parent['angZ'] = 0.3 #максимальная угловая скорость рыска
self.parent.parent['rotatDyn'] = 0.13 #динамичность угловых скоростей
self.parent.parent['dvigDyn'] = 4 #динамичность двигателя
self.parent.parent['speedDyn'] = 5 #динамичность скорости
self.parent.parent['startSpeed'] = 1.0 #стартовый коэффициенот скорости
self.parent.parent['maxFuelSpeed'] = 1.8 #максимальный расход топлива кг в секунду
self.parent.parent['massFuelOwn'] = 4590 #внутренний запас топлива
self.parent.parent['unitChassy'] = 'E_' #тип шасси
self.parent.parent['ownECM'] = 0.05 #встроенная система РЭБ - эффективность
Здесь отнюдь не все модификации - а то слишком много места уйдет. А теперь кусочек кода по вооружению:
#Генерация вооружения
if self.point9 != 'pusto':
#Добавление топливных баков
if self.point0 in ['FuelTank-1','FuelTank-3']:
ptbCnt = scene.addObject('UniversalMesh', self)
ptbCnt['meshes'] = 'FLG_FuelTank_Center_'
ptbCnt['fuel'] = 800.0
ptbCnt.setParent(self.parent, False, False)
ptbCnt.localPosition = [0.0,-1.13,-1.04]
if self.point0 in ['FuelTank-2','FuelTank-3']:
#Левый подвесной бак
ptbL = scene.addObject('UniversalMesh', self)
ptbL['meshes'] = 'FLG_FuelTank_Wing_'
ptbL['fuel'] = 800.0
ptbL.setParent(self.parent, False, False)
ptbL.localPosition = [-2.67,-1.76,-0.1]
#Правый подвесной бак
ptbR = scene.addObject('UniversalMesh', self)
ptbR['meshes'] = 'FLG_FuelTank_Wing_'
ptbR['fuel'] = 800.0
ptbR.setParent(self.parent, False, False)
ptbR.localPosition = [2.67,-1.76,-0.1]
#Генерация вооружения
if self.point1 != 'pusto':
#Добавление оружия
#Ракеты средней дальности для МиГ-23
if self.point1 in ['R-23R+R-23T','R-24R+R-24T','R-24RM+R-24T','R-24R','R-23R','R-24RM','R-24T','R-23T']:
#Пилон стандартный для всех вариантов
pilon1 = scene.addObject('UniversalMesh', self)
pilon1.setParent(own, False, False)
pilon1['meshes'] = 'FLG_APU23_'
#Ракет две штуки всегда, расположение - одинаковое
weaponMesh1newObject1 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject1.setParent(self, False, False)
weaponMesh1newObject2 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject2.setParent(self, False, False)
weaponMesh1newObject1.localPosition = [-1.428,-2.0,0.03]
weaponMesh1newObject1.applyRotation([-0.035,0.0,0.0],True)
weaponMesh1newObject2.localPosition = [1.428,-2.0,0.03]
weaponMesh1newObject2.applyRotation([-0.035,0.0,0.0],True)
if self.point1 in ['R-24R','R-23R','R-24RM','R-24T','R-23T']:
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = self.point1
#При симметричной подвеске нет вопросов и по второй ракете
weaponMesh1newObject2['weapon'] = 1
weaponMesh1newObject2['meshes'] = self.point1
#Смешанная подвеска
elif self.point1 == 'R-23R+R-23T':
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = 'R-23R'
#При смешанной подвеске вторая ракета получает другие значения проперти и меша
weaponMesh1newObject2['weapon'] = 3
weaponMesh1newObject2['meshes'] = 'R-23T'
elif self.point1 == 'R-24R+R-24T':
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = 'R-24R'
#При смешанной подвеске вторая ракета получает другие значения проперти и меша
weaponMesh1newObject2['weapon'] = 3
weaponMesh1newObject2['meshes'] = 'R-24T'
elif self.point1 == 'R-24RM+R-24T':
#Для первой ракеты значение проперти и меша по-любому стандартны
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = 'R-24RM'
#При смешанной подвеске вторая ракета получает другие значения проперти и меша
weaponMesh1newObject2['weapon'] = 3
weaponMesh1newObject2['meshes'] = 'R-24T'
#Ракеты Р-3Р, Р-3С, Р-13М и Р-13М1
elif self.point1 in ['R-3R','R-3S','R-13M','R-13M1']:
weaponMesh1newObject1 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject1.setParent(self, False, False)
weaponMesh1newObject1['weapon'] = 1
weaponMesh1newObject1['meshes'] = self.point1
weaponMesh1newObject2 = scene.addObject('UniversalMesh', self)
weaponMesh1newObject2.setParent(self, False, False)
weaponMesh1newObject2['weapon'] = 1
weaponMesh1newObject2['meshes'] = self.point1
#Это расположение ракет на пилонах МиГ-23
if 'MiG-23' in self.parent.parent['unitName']:
weaponMesh1newObject1.localPosition = [-1.428,-1.57,0.027]
weaponMesh1newObject1.applyRotation([-0.0175,0.0,0.0],True)
weaponMesh1newObject2.localPosition = [1.428,-1.57,0.027]
weaponMesh1newObject2.applyRotation([-0.0175,0.0,0.0],True)
pilon1 = scene.addObject('UniversalMesh', self)
pilon1.setParent(self, False, False)
pilon1['meshes'] = 'FLG_APU13W'
#Расположение ракет на МиГ-27 чуть отличается плюс другой пилон
elif 'MiG-27' in self.parent.parent['unitName']:
weaponMesh1newObject1.localPosition = [-1.428,-1.57,-0.02]
weaponMesh1newObject1.applyRotation([-0.0175,0.0,0.0],True)
weaponMesh1newObject2.localPosition = [1.428,-1.57,0.02]
weaponMesh1newObject2.applyRotation([-0.0175,0.0,0.0],True)
pilon1 = scene.addObject('UniversalMesh', self)
pilon1.setParent(self, False, False)
pilon1['meshes'] = 'FLG_APU3W_'
Несколько длинновато, ну ладно, пускай на всякий случай будет.
Как видно из написанного, в обязательном порядке добавляется фигура летчика, а для МиГ-27 еще и пушка ГШ-630. Кроме того, с течением времени добавятся блоки выброса помех, контейнеры РЭБ, и другое вооружение, вроде никак не доделываемых мною УРВЗ Х-25.
Все это - одноразовая функция, исполняемая объектом Generator, с коротким временм жизни, двойной parent - это родитель его родителя (дедушка, сатло быть, хе-хе) - сам двигатель юнита. вот, значит, внучок, дедушку жизни учит... Проставляя ему свойства, прописанные в классе. Вся эта бюрократия, хотя и весьма объемна, но необходима. могу только сказать, что в том же WoE подобных перечислений на порядок больше. Хотя, может стоит брать все данные из текстовых файлов? я просто не знаю, открытый, а потом закрытый текстовый файл загружает память или нет...
В общем, пока так обстоят дела. Картинок пока новых нет, так что остается только текст.
P.S. Сейчас видел забавное поведение вороны, прилетевшей на огород - попить ей, видите ли захотелось. Четыре ведра, одно закрытое. По очереди отпила из КАЖДОГО ОТКРЫТОГО. Видимо, думала, что в разных ведрах вода разной степени вкусности. Потом некоторое время поизучала закрытое и улетела. Видимо, решила, что там та же самая вода...
Комментариев нет:
Отправить комментарий