diff --git a/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx b/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx index d9d8e5076..488f2198b 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx @@ -142,7 +142,11 @@ export function TankDisplay() { } > - {mode === 'armor' && } + {mode === 'armor' && ( + + + + )} diff --git a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx index 2f1a6bcf0..3ba42fad4 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor.tsx @@ -16,7 +16,7 @@ import { Lighting } from '../../Lighting'; interface TankArmorProps extends GroupProps {} -export function TankArmor(props: TankArmorProps) { +export function TankArmor({ ...props }: TankArmorProps) { const [awaitedModelDefinitions, setAwaitedModelDefinitions] = useState< ModelDefinitions | undefined >(undefined); @@ -91,10 +91,12 @@ export function TankArmor(props: TankArmorProps) { const armorId = parseInt(node.name.match(/.+_armor_(\d+)/)![1]); const isVisible = isHull; const thickness = tankModelDefinition.armor.thickness[armorId]; + const isSpaced = tankModelDefinition.armor.spaced?.includes(armorId); if (!isVisible || thickness === undefined) return null; return ( state.model.opaqueArmor); return ( <> - - - + {!spaced && ( + + + + )} - + diff --git a/src/components/ArmorMesh/shaders/fragment.glsl b/src/components/ArmorMesh/shaders/fragment.glsl index 83fa201bf..fefe55c1a 100644 --- a/src/components/ArmorMesh/shaders/fragment.glsl +++ b/src/components/ArmorMesh/shaders/fragment.glsl @@ -6,6 +6,7 @@ uniform float penetration; uniform float ricochet; uniform float caliber; uniform float normalization; +uniform bool spaced; void main() { vec3 normalizedNormal = normalize(vNormal); @@ -41,5 +42,11 @@ void main() { } } - csm_FragColor = vec4(1.0, 0.0, 0.0, (1.0 - penetrationChance) * 0.5); + float alpha = (1.0 - penetrationChance) * 0.5; + + if (spaced) { + csm_FragColor = vec4(0.0, 0.0, 1.0, alpha); + } else { + csm_FragColor = vec4(1.0, 0.0, 0.0, alpha); + } } \ No newline at end of file