fix: no external module spaced armor occlusion

This commit is contained in:
TrèsAbhi committed 2024-01-20 12:01:05 -06:00
1 parent d12440f60a
commit 871b746cce
2 files changed
+40 -7

No files matched your search

@@ -14,6 +14,7 @@ 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';
@@ -119,7 +120,10 @@ export const SpacedArmorDepth = memo<SpacedArmorDepthProps>(({ 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];
@@ -173,6 +177,20 @@ export const SpacedArmorDepth = memo<SpacedArmorDepthProps>(({ 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 (
<ArmorMeshSpacedArmorDepth
key={node.uuid}
geometry={(node as Mesh).geometry}
/>
);
})}
<group ref={turretContainer}>
{armorNodes.map((node) => {
@@ -224,6 +242,21 @@ export const SpacedArmorDepth = memo<SpacedArmorDepthProps>(({ duel }) => {
/>
);
})}
{modelNodes.map((node) => {
const isCurrentGun =
node.name ===
`gun_${gunModelDefinition.model.toString().padStart(2, '0')}`;
const isVisible = isCurrentGun;
if (!isVisible) return null;
return (
<ArmorMeshSpacedArmorDepth
key={node.uuid}
geometry={(node as Mesh).geometry}
/>
);
})}
</group>
</group>
</group>