From 3e3ed35fb0ff5bb011c4075d96041319505c2732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:17:19 -0600 Subject: [PATCH] feat: better auto ricochet check for spaced armor --- .../ArmorMesh/components/Armor/shaders/fragment.glsl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl index cfa1111dc..c250a8223 100644 --- a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl +++ b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl @@ -45,8 +45,13 @@ void main() { float penetrationChance = -1.0; float splashChance = -1.0; bool threeCalibersRule = caliber > 3.0 * thickness; + float normalizedSpacedArmorThickness = spacedArmorMaskColor.g; + float spacedArmorNominalThickness = normalizedSpacedArmorThickness * maxSpacedArmorThickness; + bool spadedArmorThreeCalibersRule = isUnderSpacedArmor && caliber > 3.0 * spacedArmorNominalThickness; + bool ricochetSpacedArmor = isUnderSpacedArmor && !spadedArmorThreeCalibersRule && spacedArmorAngle >= ricochet; + bool ricochetCoreArmor = !ricochetSpacedArmor && !isUnderExternalModule && !isExternalModule && !isExplosive && !threeCalibersRule && angle >= ricochet; - if ((!isUnderExternalModule && !isExternalModule && !isExplosive && !threeCalibersRule && angle >= ricochet) || (isUnderSpacedArmor && spacedArmorAngle >= ricochet)) { + if (ricochetCoreArmor || ricochetSpacedArmor) { penetrationChance = 0.0; splashChance = 0.0; } else { @@ -59,8 +64,6 @@ void main() { } if (isUnderSpacedArmor) { - float normalizedSpacedArmorThickness = spacedArmorMaskColor.g; - float spacedArmorNominalThickness = normalizedSpacedArmorThickness * maxSpacedArmorThickness; float spacedArmorThickness = spacedArmorNominalThickness / cos(spacedArmorAngle); piercedPenetration -= spacedArmorThickness; }