diff --git a/scripts/buildAssets/tankArmors.ts b/scripts/buildAssets/tankArmors.ts index 0e898de46..3ffc091f4 100644 --- a/scripts/buildAssets/tankArmors.ts +++ b/scripts/buildAssets/tankArmors.ts @@ -20,6 +20,8 @@ export async function buildTankArmors() { await Promise.all( nations.map(async (nation) => { + if (nation !== 'usa') return; + const tanks = await readXMLDVPL<{ root: VehicleDefinitionList }>( `${DATA}/${POI.vehicleDefinitions}/${nation}/list.xml.dvpl`, ); @@ -28,8 +30,6 @@ export async function buildTankArmors() { Object.entries(tanks.root).map(async ([tankKey, tank]) => { const id = toUniqueId(nation, tank.id); - if (id !== 26897) return; - console.log(`Building armor ${id} @ ${nation}/${tankKey}`); const model = await extractArmor(DATA, `${nation}-${tankKey}`); diff --git a/scripts/buildAssets/tankModels.ts b/scripts/buildAssets/tankModels.ts index b849e66f5..69a878cf6 100644 --- a/scripts/buildAssets/tankModels.ts +++ b/scripts/buildAssets/tankModels.ts @@ -27,6 +27,8 @@ export async function buildTankModels() { await Promise.all( nations.map(async (nation) => { + if (nation !== 'usa') return; + const tanks = await readXMLDVPL<{ root: VehicleDefinitionList }>( `${DATA}/${POI.vehicleDefinitions}/${nation}/list.xml.dvpl`, ); @@ -43,8 +45,6 @@ export async function buildTankModels() { Object.entries(tanks.root).map(async ([tankKey, tank]) => { const id = toUniqueId(nation, tank.id); - if (id !== 26897) return; - console.log(`Building model ${id} @ ${nation}/${tankKey}`); const parameters = await readYAMLDVPL( diff --git a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/ArmorHighlighting.tsx b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/ArmorHighlighting.tsx index dc6fe277e..88ee2effd 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/ArmorHighlighting.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/ArmorHighlighting.tsx @@ -106,7 +106,6 @@ export function ArmorHighlighting({ duel }: ArmorHighlightingProps) { }); const armorGltf = useArmor(duel.protagonist.tank.id); - const armorNodes = Object.values(armorGltf.nodes); const tankModelDefinition = modelDefinitions[duel.protagonist.tank.id]; const turretModelDefinition = diff --git a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/SpacedArmorDepth.tsx b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/SpacedArmorDepth.tsx index d776e7eab..8e902bab2 100644 --- a/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/SpacedArmorDepth.tsx +++ b/src/app/tools/tankopedia/[id]/components/Model/components/TankArmor/components/SpacedArmorDepth.tsx @@ -14,7 +14,6 @@ import { import { nameToArmorId } from '../../../../../../../../../core/blitzkrieg/nameToArmorId'; import { resolveArmor } from '../../../../../../../../../core/blitzkrieg/resolveThickness'; import { useArmor } from '../../../../../../../../../hooks/useArmor'; -import { useModel } from '../../../../../../../../../hooks/useModel'; import { useModelDefinitions } from '../../../../../../../../../hooks/useModelDefinitions'; import { useTankopedia } from '../../../../../../../../../stores/tankopedia'; import { Duel } from '../../../../../page'; @@ -120,10 +119,7 @@ export const SpacedArmorDepth = memo(({ duel }) => { }); const armorGltf = useArmor(duel.protagonist.tank.id); - const modelGltf = useModel(duel.protagonist.tank.id); - const armorNodes = Object.values(armorGltf.nodes); - const modelNodes = Object.values(modelGltf.nodes); const tankModelDefinition = modelDefinitions[duel.protagonist.tank.id]; const turretModelDefinition = tankModelDefinition.turrets[duel.protagonist.turret.id]; @@ -178,21 +174,6 @@ export const SpacedArmorDepth = memo(({ duel }) => { ); })} - {modelNodes.map((node) => { - const isWheel = node.name.startsWith('chassis_wheel_'); - const isTrack = node.name.startsWith('chassis_track_'); - const isVisible = isWheel || isTrack; - - if (!isVisible) return null; - - return ( - - ); - })} - {armorNodes.map((node) => { const isCurrentTurret = node.name.startsWith( @@ -243,22 +224,6 @@ export const SpacedArmorDepth = memo(({ duel }) => { /> ); })} - - {modelNodes.map((node) => { - const isCurrentGun = - node.name === - `gun_${gunModelDefinition.model.toString().padStart(2, '0')}`; - const isVisible = isCurrentGun; - - if (!isVisible) return null; - - return ( - - ); - })} diff --git a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl index 4f3c07e2a..e0f2e7d0b 100644 --- a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl +++ b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl @@ -40,7 +40,6 @@ void main() { float dotProduct = dot(normalizedNormal, -normalizedViewPosition); float angle = acos(dotProduct); float spacedArmorAngle = spacedArmorMaskColor.r * PI; - float penetrationChance = -1.0; float splashChance = -1.0; bool threeCalibersRule = caliber > 3.0 * thickness; @@ -85,7 +84,7 @@ void main() { } else if (delta < -randomRadius) { penetrationChance = 1.0; } else { - penetrationChance = 1.0 - (delta + randomRadius) / (2.0 * randomRadius); + penetrationChance = max(1.0 - (delta + randomRadius) / (2.0 * randomRadius), 0.0); } if (canSplash) { diff --git a/src/core/blitz/extractModel.ts b/src/core/blitz/extractModel.ts index cf1919912..350051835 100644 --- a/src/core/blitz/extractModel.ts +++ b/src/core/blitz/extractModel.ts @@ -176,6 +176,7 @@ export async function extractModel( case 'MotionComponent': case 'TankElementComponent': case 'SkeletonComponent': + case 'AnimationComponent': break; case 'TransformComponent': { @@ -183,6 +184,15 @@ export async function extractModel( const rotation = new Quaternion(); const scale = new Vector3(); + if ( + !component['tc.worldTranslation'] || + !component['tc.worldScale'] || + !component['tc.localTranslation'] || + !component['tc.localScale'] + ) { + console.log(component); + } + new Matrix4() .multiplyMatrices( new Matrix4().compose( diff --git a/src/core/streams/sc2.ts b/src/core/streams/sc2.ts index 46c2fa585..7546ecca7 100644 --- a/src/core/streams/sc2.ts +++ b/src/core/streams/sc2.ts @@ -265,6 +265,12 @@ export type Component = } >; jointsCount: number; + } + | { + 'comp.typename': 'AnimationComponent'; + animation: bigint; + animationTimeScale: number; + repeatsCount: number; }; interface SceneComponents {