2 MG-13
Если геометрия чего-то не реализована- то вероятностный подход (см. пост olegkirillov) вполне дешевый и достаточно сердитый способ реализации частичных повреждений, к тому же, настраиваемый.
Фактически, ничего другого не остается, как ввести вероятность повреждения: у вас же не учитывается форма пули или осколка, нельзя правильно рассчитать ее рикошет. Вероятность повреждения можно связать с калибром, или с энергией, раз уж она у вас везде в ДМ используется.
Например, вероятность выведения из строя можно рассчитать как:
Для тросовых тяг:
World.Rnd().nextFloat(10000) < shot.power
что даст около 30% для винтовочного калибра и около 100% для 12.7
Для трубчатых тяг:
World.Rnd().nextFloat(30000) < shot.power
что даст около 10% для винтовочного калибра и около 100% для 20мм ББ.
(Предполагается, что остальные вероятностные допущения останутся без изменений).
Для дублированных тяг вероятность можно уменьшать вдвое, раз уж своей геометрии для них нет. По той же причине можно (прямо в doSetControlsDamage(), если в ЗС не планируется включать модели с "честной" геометрией тяг триммеров) с вероятностью 50% выбирать: выключать руль или соответствующий триммер. Для очистки совести желательно проверить, имеет ли этот крафт соотетствующий триммер (а не просто если ли он в данный момент). В конце концов, даже если в ЗС (или в другом продукте, который переиспользует AircraftState.class) появится надобность в перебитых тягах триммеров, то эту функцию (doSetControlsDamage) так или иначе придется править.
ЗЫ: Я за тяги триммеров переживаю, потому-что это добавит в процесс новое качество: фича довольно вкусная: садить Ил на триммерах...![]()