fix: more accurate splash mechanics

This commit is contained in:
TrèsAbhi committed 2024-03-13 17:15:22 -05:00
1 parent 4819100ec6
commit 2a169fac34
2 files changed
+3 -3

No files matched your search

@@ -53,7 +53,7 @@ void main() {
float spacedArmorThickness = spacedArmorBufferFragment.r * penetration; float spacedArmorThickness = spacedArmorBufferFragment.r * penetration;
remainingPenetration -= spacedArmorThickness; remainingPenetration -= spacedArmorThickness;
if (isExplosive && !canSplash && remainingPenetration > 0.0) { if (isExplosive && remainingPenetration > 0.0) {
// there is a 50% penetration loss per meter for HEAT shells // there is a 50% penetration loss per meter for HEAT shells
remainingPenetration -= 0.5 * remainingPenetration * distanceFromSpacedArmor; remainingPenetration -= 0.5 * remainingPenetration * distanceFromSpacedArmor;
} }
@@ -170,7 +170,7 @@ export function SpacedArmorSceneComponent({
const distance = ( const distance = (
shot.layers.at(-1) as ShotLayerBase shot.layers.at(-1) as ShotLayerBase
).point.distanceTo(intersections[0].point); ).point.distanceTo(intersections[0].point);
if (explosive && !splashing) if (explosive)
remainingPenetration -= 0.5 * remainingPenetration * distance; remainingPenetration -= 0.5 * remainingPenetration * distance;
const blocked = remainingPenetration < 0; const blocked = remainingPenetration < 0;
@@ -196,7 +196,7 @@ export function SpacedArmorSceneComponent({
const previousIntersection = intersections[layerIndex - 1]; const previousIntersection = intersections[layerIndex - 1];
const distance = const distance =
intersection.distance - previousIntersection.distance; intersection.distance - previousIntersection.distance;
if (explosive && !splashing) if (explosive)
remainingPenetration -= remainingPenetration -=
0.5 * remainingPenetration * distance; 0.5 * remainingPenetration * distance;
const wasted = remainingPenetration < 0; const wasted = remainingPenetration < 0;