fix: armor highlighting desync

This commit is contained in:
TrèsAbhi committed 2024-01-16 12:34:00 -06:00
1 parent 1911508552
commit 9b3c7451b7
4 files changed
+15 -16

No files matched your search

@@ -26,14 +26,12 @@ interface ArmorHighlightingProps {
export function ArmorHighlighting({ duel }: ArmorHighlightingProps) {
const wrapper = useRef<Group>(null);
const awaitedModelDefinitions = useModelDefinitions();
const modelDefinitions = useModelDefinitions();
const turretContainer = useRef<Group>(null);
const gunContainer = useRef<Group>(null);
const initialTankopediaState = useTankopedia.getState();
useEffect(() => {
if (!awaitedModelDefinitions) return;
const turretOrigin = new Vector3(
tankModelDefinition.turretOrigin[0],
tankModelDefinition.turretOrigin[1],
@@ -90,12 +88,13 @@ export function ArmorHighlighting({ duel }: ArmorHighlightingProps) {
turretContainer.current?.rotation.copy(turretRotation);
}
handleModelTransform(useTankopedia.getState().model.physical);
modelTransformEvent.on(handleModelTransform);
return () => {
modelTransformEvent.off(handleModelTransform);
};
}, [awaitedModelDefinitions]);
});
useEffect(() => {
const unsubscribe = useTankopedia.subscribe(
@@ -114,7 +113,7 @@ export function ArmorHighlighting({ duel }: ArmorHighlightingProps) {
);
const armorNodes = Object.values(armorGltf.nodes);
const tankModelDefinition = awaitedModelDefinitions[duel.protagonist.tank.id];
const tankModelDefinition = modelDefinitions[duel.protagonist.tank.id];
const turretModelDefinition =
tankModelDefinition.turrets[duel.protagonist.turret.id];
const gunModelDefinition =
@@ -33,14 +33,12 @@ interface ExternalModuleMaskProps {
*/
export const ExternalModuleMask = memo<ExternalModuleMaskProps>(({ duel }) => {
const wrapper = useRef<Group>(null);
const awaitedModelDefinitions = useModelDefinitions();
const modelDefinitions = useModelDefinitions();
const turretContainer = useRef<Group>(null);
const gunContainer = useRef<Group>(null);
const initialTankopediaState = useTankopedia.getState();
useEffect(() => {
if (!awaitedModelDefinitions) return;
const turretOrigin = new Vector3(
tankModelDefinition.turretOrigin[0],
tankModelDefinition.turretOrigin[1],
@@ -97,12 +95,13 @@ export const ExternalModuleMask = memo<ExternalModuleMaskProps>(({ duel }) => {
turretContainer.current?.rotation.copy(turretRotation);
}
handleModelTransform(useTankopedia.getState().model.physical);
modelTransformEvent.on(handleModelTransform);
return () => {
modelTransformEvent.off(handleModelTransform);
};
}, [awaitedModelDefinitions]);
});
useEffect(() => {
const unsubscribe = useTankopedia.subscribe(
@@ -126,7 +125,7 @@ export const ExternalModuleMask = memo<ExternalModuleMaskProps>(({ duel }) => {
const armorNodes = Object.values(armorGltf.nodes);
const modelNodes = Object.values(modelGltf.nodes);
const tankModelDefinition = awaitedModelDefinitions[duel.protagonist.tank.id];
const tankModelDefinition = modelDefinitions[duel.protagonist.tank.id];
const turretModelDefinition =
tankModelDefinition.turrets[duel.protagonist.turret.id];
const gunModelDefinition =
@@ -37,13 +37,13 @@ interface SpacedArmorDepthProps {
*/
export const SpacedArmorDepth = memo<SpacedArmorDepthProps>(({ duel }) => {
const wrapper = useRef<Group>(null);
const awaitedModelDefinitions = useModelDefinitions();
const modelDefinitions = useModelDefinitions();
const turretContainer = useRef<Group>(null);
const gunContainer = useRef<Group>(null);
const initialTankopediaState = useTankopedia.getState();
useEffect(() => {
if (!awaitedModelDefinitions) return;
if (!modelDefinitions) return;
const turretOrigin = new Vector3(
tankModelDefinition.turretOrigin[0],
@@ -101,12 +101,13 @@ export const SpacedArmorDepth = memo<SpacedArmorDepthProps>(({ duel }) => {
turretContainer.current?.rotation.copy(turretRotation);
}
handleModelTransform(useTankopedia.getState().model.physical);
modelTransformEvent.on(handleModelTransform);
return () => {
modelTransformEvent.off(handleModelTransform);
};
}, [awaitedModelDefinitions]);
});
useEffect(() => {
const unsubscribe = useTankopedia.subscribe(
@@ -130,7 +131,7 @@ export const SpacedArmorDepth = memo<SpacedArmorDepthProps>(({ duel }) => {
const armorNodes = Object.values(armorGltf.nodes);
const modelNodes = Object.values(modelGltf.nodes);
const tankModelDefinition = awaitedModelDefinitions[duel.protagonist.tank.id];
const tankModelDefinition = modelDefinitions[duel.protagonist.tank.id];
const turretModelDefinition =
tankModelDefinition.turrets[duel.protagonist.turret.id];
const gunModelDefinition =
@@ -29,11 +29,11 @@ export function ArmorMesh({
duel,
...props
}: ArmorMeshProps) {
const camera = useThree((state) => state.camera);
const { shell } = duel.antagonist;
const greenPenetration = useTankopedia(
(state) => state.model.visual.greenPenetration,
);
const camera = useThree((state) => state.camera);
const { shell } = duel.antagonist;
const material = useRef<ShaderMaterial>(null);
const resolution = new Vector2();