diff --git a/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx b/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx index 2f47f304e..6a7c7f1cb 100644 --- a/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx +++ b/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx @@ -375,7 +375,7 @@ export function SpacedArmorSceneComponent({ ); if (staticMode) { - const x = clamp(thickness / thicknessRange.max, 0, 1); + const x = clamp(thickness / thicknessRange.quartile, 0, 1); const y = Math.sqrt(x); const r = -((1 - y) ** 2) + 1; const g = -(y ** 2) + 1; diff --git a/src/components/StaticArmor/components/StaticArmorScene.tsx b/src/components/StaticArmor/components/StaticArmorScene.tsx index 3a0618f07..f3bb8c100 100644 --- a/src/components/StaticArmor/components/StaticArmorScene.tsx +++ b/src/components/StaticArmor/components/StaticArmorScene.tsx @@ -20,7 +20,8 @@ interface StaticArmorSceneProps { } export interface ThicknessRange { - max: number; + // max: number; + quartile: number; } export const StaticArmorScene = memo( @@ -61,27 +62,17 @@ export const StaticArmorScene = memo( .filter(Boolean) .map(({ model, id }) => { const tankThicknesses = Object.values(model.armor.thickness); - const trackThicknesses = Object.values(model.tracks) - .map((track) => track.thickness) - .flat(); const turretThicknesses = Object.values(model.turrets) .map((turret) => { const turretThicknesses = Object.values(turret.armor.thickness); const gunThicknesses = Object.values(turret.guns) - .map((gun) => { - return Object.values(gun.armor.thickness); - }) + .map((gun) => Object.values(gun.armor.thickness)) .flat(); return [...turretThicknesses, ...gunThicknesses]; }) .flat(); - - const totalThicknesses = [ - ...tankThicknesses, - ...trackThicknesses, - ...turretThicknesses, - ]; + const totalThicknesses = [...tankThicknesses, ...turretThicknesses]; if (id === tank.id) thisTankThicknesses = totalThicknesses; @@ -89,12 +80,22 @@ export const StaticArmorScene = memo( }) .flat(); - // const maxOfAll = Math.max(...thicknesses) * 0.75; - // const max = Math.max(...thisTankThicknesses, maxOfAll); + const sortedThicknesses = thicknesses.sort((a, b) => a - b); + const quartileIndex = (1 - 2 ** -6) * (sortedThicknesses.length + 1) - 1; + let quartile: number; - const max = Math.max(...thicknesses); + if (Number.isInteger(quartileIndex)) { + quartile = sortedThicknesses[quartileIndex]; + } else { + quartile = + (sortedThicknesses[Math.floor(quartileIndex)] + + sortedThicknesses[Math.ceil(quartileIndex)]) / + 2; + } - return { max } satisfies ThicknessRange; + console.log('quartile', quartile); + + return { quartile } satisfies ThicknessRange; }, [tank.tier]); useTankTransform(protagonist, turretContainer, gunContainer);