Заметка про презентации.
Немного помню как в середине/конце 2000-х смотрел про презентации
новых патчей от 1С и конторы ОМа.
Было интересно, прикольно и захватывающе - часто стоял екран,
перед которым чувак за джоем крутил пилотаж на новой модельке ероплана.
У зрителей челюсть отвисала, ведь крутизна немерянная.

------------------------
А теперь о проблемах насущных.
Все кто летал миссии за союзников на П-40 знают, что часто одна мелкая
пулька перебивала все рули управления.
Когда это было на 10 прохождении миссии в неожиданный момент -
хотелось достать из тумбочки молоток и лупить пол часа по экрану.
Полез в хит-бон основного класса П-40.
Сразу пришло на ум: оптимизаторы хреновы.
Такое впечатление, что код писали не программеры Ома,
а зашедший на чашку кофе стажёр из другого отдела 1С.
Пока программеры купались в лучах славы на презентациях.
Дамаж модель в 3До планеров П-40 нужно переделывать, а в класс
вставлють людский код как это делает Дима(с).
Я только чуть-чуть любитель и всё что могу - пересобрать кирпичи кода,
попутно заменить тяги из хрусталя на железный тросы.
Код:
protected void hitBone(String s, Shot shot, Point3d point3d)
{
if(s.startsWith("xx"))
{
if(s.startsWith("xxarmor"))
if(s.endsWith("p1"))
{
getEnergyPastArmor(15F / (1E-005F + (float)Math.abs(v1.x)), shot);
FM.AS.setCockpitState(shot.initiator, FM.AS.astateCockpitState | 2);
} else
if(s.endsWith("p2"))
getEnergyPastArmor(4.0F / (1E-005F + (float)Math.abs(v1.x)), shot);
else
if(s.endsWith("p3"))
getEnergyPastArmor(2.0F / (1E-005F + (float)Math.abs(v1.x)), shot);
if(s.startsWith("xxcontrols"))
if(s.endsWith("1"))
{
if(getEnergyPastArmor(1.75F, shot) > 0.0F && World.Rnd().nextFloat() < 0.3F)
{
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
debugprintln(this, "*** Engine Controls Out..");
}
if(getEnergyPastArmor(1.05F, shot) > 0.0F && World.Rnd().nextFloat() < 0.3F)
{
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 6);
debugprintln(this, "*** Engine Controls Out..");
}
if(getEnergyPastArmor(0.5F, shot) > 0.0F && World.Rnd().nextFloat() < 0.3F)
{
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 7);
debugprintln(this, "*** Engine Controls Out..");
}
} else
if(s.endsWith("2"))
{
if(World.Rnd().nextFloat() < 0.2F && getEnergyPastArmor(1.5F, shot) > 0.0F)
{
FM.AS.setControlsDamage(shot.initiator, 1);
debugprintln(this, "*** Evelator Controls Out..");
}
if(World.Rnd().nextFloat() < 0.2F && getEnergyPastArmor(1.5F, shot) > 0.0F)
{
FM.AS.setControlsDamage(shot.initiator, 0);
debugprintln(this, "*** Ailerones Controls Out..");
}
if(World.Rnd().nextFloat() < 0.2F && getEnergyPastArmor(1.5F, shot) > 0.0F)
{
FM.AS.setControlsDamage(shot.initiator, 2);
debugprintln(this, "*** Rudder Controls Out..");
}
/* if(World.Rnd().nextFloat() < 0.3F)
{
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 6);
debugprintln(this, "*** Engine Controls Out..");
}
if(World.Rnd().nextFloat() < 0.3F)
{
FM.AS.setEngineSpecificDamage(shot.initiator, 0, 1);
debugprintln(this, "*** Engine Controls Out..");
} */
} else
if(s.endsWith("3"))
{
if(World.Rnd().nextFloat() < 0.3F && getEnergyPastArmor(0.99F, shot) > 0.0F)
{
FM.AS.setControlsDamage(shot.initiator, 2);
debugprintln(this, "*** Rudder Controls Out..");
debugprintln(this, "*** Evelator Controls Out..");
}
} else
if((s.endsWith("4") || s.endsWith("5")))
{
if(World.Rnd().nextFloat() < 0.3F && getEnergyPastArmor(0.99F, shot) > 0.0F)
{
FM.AS.setControlsDamage(shot.initiator, 0);
debugprintln(this, "*** Ailerones Controls Out..");
}
} else
----------------------------
Фм и моторы собраны, классы моделей от 20 года проверил.
Перепишу дамаж модель и мод будет доступен после тестов.
Медленно вожусь, потому что на работу надо ходить + домашние обязанности.
В фм от 2020 года изменений минимум - только в параметрах
поправил нескольк цыфр, в том числе к_макс.