mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
fix: no external module spaced armor occlusion
This commit is contained in:
1 parent
d12440f60a
commit
871b746cce
2 files changed
+40
-7
No files matched your search
+33
@@ -14,6 +14,7 @@ import {
|
|||||||
import { nameToArmorId } from '../../../../../../../../../core/blitzkrieg/nameToArmorId';
|
import { nameToArmorId } from '../../../../../../../../../core/blitzkrieg/nameToArmorId';
|
||||||
import { resolveArmor } from '../../../../../../../../../core/blitzkrieg/resolveThickness';
|
import { resolveArmor } from '../../../../../../../../../core/blitzkrieg/resolveThickness';
|
||||||
import { useArmor } from '../../../../../../../../../hooks/useArmor';
|
import { useArmor } from '../../../../../../../../../hooks/useArmor';
|
||||||
|
import { useModel } from '../../../../../../../../../hooks/useModel';
|
||||||
import { useModelDefinitions } from '../../../../../../../../../hooks/useModelDefinitions';
|
import { useModelDefinitions } from '../../../../../../../../../hooks/useModelDefinitions';
|
||||||
import { useTankopedia } from '../../../../../../../../../stores/tankopedia';
|
import { useTankopedia } from '../../../../../../../../../stores/tankopedia';
|
||||||
import { Duel } from '../../../../../page';
|
import { Duel } from '../../../../../page';
|
||||||
@@ -119,7 +120,10 @@ export const SpacedArmorDepth = memo<SpacedArmorDepthProps>(({ duel }) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const armorGltf = useArmor(duel.protagonist.tank.id);
|
const armorGltf = useArmor(duel.protagonist.tank.id);
|
||||||
|
const modelGltf = useModel(duel.protagonist.tank.id);
|
||||||
|
|
||||||
const armorNodes = Object.values(armorGltf.nodes);
|
const armorNodes = Object.values(armorGltf.nodes);
|
||||||
|
const modelNodes = Object.values(modelGltf.nodes);
|
||||||
const tankModelDefinition = modelDefinitions[duel.protagonist.tank.id];
|
const tankModelDefinition = modelDefinitions[duel.protagonist.tank.id];
|
||||||
const turretModelDefinition =
|
const turretModelDefinition =
|
||||||
tankModelDefinition.turrets[duel.protagonist.turret.id];
|
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}>
|
<group ref={turretContainer}>
|
||||||
{armorNodes.map((node) => {
|
{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>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
|
|||||||
@@ -23,14 +23,8 @@ export function ArmorMeshSpacedArmorDepth(
|
|||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{!props.include && (
|
|
||||||
<mesh {...props} renderOrder={0}>
|
|
||||||
<meshBasicMaterial colorWrite={false} />
|
|
||||||
</mesh>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{props.include && (
|
{props.include && (
|
||||||
<mesh {...props} renderOrder={1}>
|
<mesh {...props} renderOrder={0}>
|
||||||
<ThreeCustomShaderMaterial
|
<ThreeCustomShaderMaterial
|
||||||
silent
|
silent
|
||||||
depthWrite={false}
|
depthWrite={false}
|
||||||
@@ -44,6 +38,12 @@ export function ArmorMeshSpacedArmorDepth(
|
|||||||
/>
|
/>
|
||||||
</mesh>
|
</mesh>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{!props.include && (
|
||||||
|
<mesh {...props} renderOrder={1}>
|
||||||
|
<meshBasicMaterial colorWrite={false} />
|
||||||
|
</mesh>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user