feat: syncronize tank model

This commit is contained in:
TrèsAbhi committed 2025-08-12 12:52:57 -05:00
1 parent e47b1315a9
commit a0eb0d54f0
4 files changed
+53 -71

No files matched your search

@@ -7,14 +7,42 @@ import { Duel } from '../../../../../../../../stores/duel';
const modelDefinitions = await awaitableModelDefinitions;
const surfaceMaterial = new MeshBasicMaterial({
color: mauveDark.mauve6,
toneMapped: false,
});
const outlineMaterial = new LineBasicMaterial({
color: mauveDark.mauve8,
toneMapped: false,
});
const surfaceMaterial: Record<Props['only'], MeshBasicMaterial> = {
gun: new MeshBasicMaterial({
color: mauveDark.mauve11,
toneMapped: false,
}),
turret: new MeshBasicMaterial({
color: mauveDark.mauve6,
toneMapped: false,
transparent: true,
opacity: 0.25,
}),
body: new MeshBasicMaterial({
color: mauveDark.mauve9,
toneMapped: false,
transparent: true,
opacity: 0.5,
}),
};
const outlineMaterial: Record<Props['only'], LineBasicMaterial> = {
gun: new LineBasicMaterial({
color: mauveDark.mauve3,
toneMapped: false,
}),
turret: new LineBasicMaterial({
color: mauveDark.mauve8,
toneMapped: false,
transparent: true,
opacity: 0.25,
}),
body: new LineBasicMaterial({
color: mauveDark.mauve11,
toneMapped: false,
transparent: true,
opacity: 0.5,
}),
};
interface Props {
only: 'gun' | 'turret' | 'body';
@@ -67,8 +95,8 @@ export function ModelChunk({ only }: Props) {
mesh(mesh, props, key) {
return (
<>
<mesh key={key} {...props} material={surfaceMaterial} />
<lineSegments material={outlineMaterial}>
<mesh key={key} {...props} material={surfaceMaterial[only]} />
<lineSegments material={outlineMaterial[only]}>
<edgesGeometry args={[mesh.geometry, 29]} />
</lineSegments>
</>
@@ -194,8 +194,8 @@ export function GunFlexibilityVisualizer({
transparent,
${Var('orange-a2')} ${Math.PI / 2 - maxPitch - CONIC_TRANSITION}rad,
${Var('cyan-a5')} ${Math.PI / 2 - maxPitch}rad,
${Var('jade-a5')} ${Math.PI / 2 - minPitch}rad,
${Var('cyan-a6')} ${Math.PI / 2 - maxPitch}rad,
${Var('jade-a6')} ${Math.PI / 2 - minPitch}rad,
${Var('orange-a2')} ${Math.PI / 2 - minPitch + CONIC_TRANSITION}rad,
transparent 180deg
@@ -110,23 +110,6 @@ export function TankModel() {
/>
);
},
// group(group) {
// return {
// visible:
// group.name !== 'ST_base' &&
// group.name !== 'MR_Base2' &&
// (!group.name.includes('state_entity') ||
// (isDynamicArmorActive &&
// group.name.includes('state_entity_01')) ||
// (!isDynamicArmorActive &&
// group.name.includes('state_entity_00'))) &&
// (!group.name.includes('shields') ||
// (isDynamicArmorActive &&
// group.name.includes('shields_rev')) ||
// (!isDynamicArmorActive && group.name.endsWith('shields'))),
// };
// },
});
})}
@@ -214,24 +197,6 @@ export function TankModel() {
/>
);
},
// group(group) {
// return {
// visible:
// group.name !== 'ST_base' &&
// group.name !== 'MR_Base2' &&
// (!group.name.includes('state_entity') ||
// (isDynamicArmorActive &&
// group.name.includes('state_entity_01')) ||
// (!isDynamicArmorActive &&
// group.name.includes('state_entity_00'))) &&
// (!group.name.includes('shields') ||
// (isDynamicArmorActive &&
// group.name.includes('shields_rev')) ||
// (!isDynamicArmorActive &&
// group.name.endsWith('shields'))),
// };
// },
});
})}
@@ -321,24 +286,6 @@ export function TankModel() {
/>
);
},
// group(group) {
// return {
// visible:
// group.name !== 'ST_base' &&
// group.name !== 'MR_Base2' &&
// (!group.name.includes('state_entity') ||
// (isDynamicArmorActive &&
// group.name.includes('state_entity_01')) ||
// (!isDynamicArmorActive &&
// group.name.includes('state_entity_00'))) &&
// (!group.name.includes('shields') ||
// (isDynamicArmorActive &&
// group.name.includes('shields_rev')) ||
// (!isDynamicArmorActive &&
// group.name.endsWith('shields'))),
// };
// },
});
})}
</group>