From 2a169fac34b211a99b10a2f0827ca8989c1a4f74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:15:22 -0500 Subject: [PATCH] fix: more accurate splash mechanics --- .../components/CoreArmorSceneComponent/shaders/fragment.glsl | 2 +- .../Armor/components/SpacedArmorSceneComponent/index.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl b/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl index e03696067..7975e2c20 100644 --- a/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl +++ b/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl @@ -53,7 +53,7 @@ void main() { float spacedArmorThickness = spacedArmorBufferFragment.r * penetration; remainingPenetration -= spacedArmorThickness; - if (isExplosive && !canSplash && remainingPenetration > 0.0) { + if (isExplosive && remainingPenetration > 0.0) { // there is a 50% penetration loss per meter for HEAT shells remainingPenetration -= 0.5 * remainingPenetration * distanceFromSpacedArmor; } diff --git a/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx b/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx index 5bed3de2c..9f1890888 100644 --- a/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx +++ b/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx @@ -170,7 +170,7 @@ export function SpacedArmorSceneComponent({ const distance = ( shot.layers.at(-1) as ShotLayerBase ).point.distanceTo(intersections[0].point); - if (explosive && !splashing) + if (explosive) remainingPenetration -= 0.5 * remainingPenetration * distance; const blocked = remainingPenetration < 0; @@ -196,7 +196,7 @@ export function SpacedArmorSceneComponent({ const previousIntersection = intersections[layerIndex - 1]; const distance = intersection.distance - previousIntersection.distance; - if (explosive && !splashing) + if (explosive) remainingPenetration -= 0.5 * remainingPenetration * distance; const wasted = remainingPenetration < 0;