mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-25 03:29:51 +01:00
fix: no null return before hook
This commit is contained in:
1 parent
c9eee14b21
commit
909474d4cb
4 files changed
+35
-27
No files matched your search
@@ -42,8 +42,6 @@ export function TankDisplay() {
|
|||||||
return state.protagonist;
|
return state.protagonist;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!protagonist) return null;
|
|
||||||
|
|
||||||
function handlePointerDown() {
|
function handlePointerDown() {
|
||||||
window.addEventListener('pointermove', handlePointerMove);
|
window.addEventListener('pointermove', handlePointerMove);
|
||||||
window.addEventListener('pointerup', handlePointerUp);
|
window.addEventListener('pointerup', handlePointerUp);
|
||||||
@@ -71,6 +69,8 @@ export function TankDisplay() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!protagonist) return void 0;
|
||||||
|
|
||||||
const tankModelDefinition = awaitedModelDefinitions[protagonist.tank.id];
|
const tankModelDefinition = awaitedModelDefinitions[protagonist.tank.id];
|
||||||
const turretModelDefinition =
|
const turretModelDefinition =
|
||||||
tankModelDefinition.turrets[protagonist.turret.id];
|
tankModelDefinition.turrets[protagonist.turret.id];
|
||||||
@@ -84,7 +84,9 @@ export function TankDisplay() {
|
|||||||
turretModelDefinition.yaw,
|
turretModelDefinition.yaw,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}, [protagonist.gun, protagonist.turret]);
|
}, [protagonist?.gun, protagonist?.turret]);
|
||||||
|
|
||||||
|
if (!protagonist) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Theme radius={isFullScreen ? 'none' : undefined}>
|
<Theme radius={isFullScreen ? 'none' : undefined}>
|
||||||
|
|||||||
@@ -34,7 +34,16 @@ export function TankArmor({ ...props }: TankArmorProps) {
|
|||||||
return state.antagonist;
|
return state.antagonist;
|
||||||
});
|
});
|
||||||
const showSpacedArmor = useTankopedia((state) => state.model.showSpacedArmor);
|
const showSpacedArmor = useTankopedia((state) => state.model.showSpacedArmor);
|
||||||
|
const model = useTankopedia((state) => state.model);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
(async () => {
|
||||||
|
setAwaitedModelDefinitions(await modelDefinitions);
|
||||||
|
})();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
// it's ok to have hooks after this early termination because this will never be true
|
||||||
|
// it's more for typescript to stop throwing a fit
|
||||||
if (!protagonist || !antagonist) return null;
|
if (!protagonist || !antagonist) return null;
|
||||||
|
|
||||||
const armorGltf = useLoader(
|
const armorGltf = useLoader(
|
||||||
@@ -45,13 +54,6 @@ export function TankArmor({ ...props }: TankArmorProps) {
|
|||||||
GLTFLoader,
|
GLTFLoader,
|
||||||
asset(`3d/tanks/models/${protagonist.tank.id}.glb`),
|
asset(`3d/tanks/models/${protagonist.tank.id}.glb`),
|
||||||
);
|
);
|
||||||
const model = useTankopedia((state) => state.model);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
(async () => {
|
|
||||||
setAwaitedModelDefinitions(await modelDefinitions);
|
|
||||||
})();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
if (!awaitedModelDefinitions) return null;
|
if (!awaitedModelDefinitions) return null;
|
||||||
|
|
||||||
@@ -247,6 +249,7 @@ export function TankArmor({ ...props }: TankArmorProps) {
|
|||||||
(isSpaced && !showSpacedArmor)
|
(isSpaced && !showSpacedArmor)
|
||||||
)
|
)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ArmorMesh
|
<ArmorMesh
|
||||||
isAffectedBySpaced={affectedBySpacedCapable}
|
isAffectedBySpaced={affectedBySpacedCapable}
|
||||||
|
|||||||
@@ -33,6 +33,16 @@ export function TankModel() {
|
|||||||
if (!state.areTanksAssigned) return;
|
if (!state.areTanksAssigned) return;
|
||||||
return state.protagonist;
|
return state.protagonist;
|
||||||
});
|
});
|
||||||
|
const model = useTankopedia((state) => state.model);
|
||||||
|
const hullContainer = useRef<Group>(null);
|
||||||
|
const turretContainer = useRef<Group>(null);
|
||||||
|
const gunContainer = useRef<Group>(null);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
(async () => {
|
||||||
|
setAwaitedModelDefinitions(await modelDefinitions);
|
||||||
|
})();
|
||||||
|
}, []);
|
||||||
|
|
||||||
if (!protagonist) return null;
|
if (!protagonist) return null;
|
||||||
|
|
||||||
@@ -40,18 +50,8 @@ export function TankModel() {
|
|||||||
GLTFLoader,
|
GLTFLoader,
|
||||||
asset(`3d/tanks/models/${protagonist.tank.id}.glb`),
|
asset(`3d/tanks/models/${protagonist.tank.id}.glb`),
|
||||||
);
|
);
|
||||||
const model = useTankopedia((state) => state.model);
|
|
||||||
const hullContainer = useRef<Group>(null);
|
|
||||||
const turretContainer = useRef<Group>(null);
|
|
||||||
const gunContainer = useRef<Group>(null);
|
|
||||||
const nodes = Object.values(gltf.nodes);
|
const nodes = Object.values(gltf.nodes);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
(async () => {
|
|
||||||
setAwaitedModelDefinitions(await modelDefinitions);
|
|
||||||
})();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
if (!awaitedModelDefinitions) return null;
|
if (!awaitedModelDefinitions) return null;
|
||||||
|
|
||||||
const tankModelDefinition = awaitedModelDefinitions[protagonist.tank.id];
|
const tankModelDefinition = awaitedModelDefinitions[protagonist.tank.id];
|
||||||
@@ -150,6 +150,7 @@ export function TankModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isVisible) return null;
|
if (!isVisible) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
children={resolveJsxTree(node)}
|
children={resolveJsxTree(node)}
|
||||||
@@ -248,6 +249,7 @@ export function TankModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isVisible) return null;
|
if (!isVisible) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
visible={isVisible}
|
visible={isVisible}
|
||||||
@@ -353,6 +355,7 @@ export function TankModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isVisible) return null;
|
if (!isVisible) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
visible={isVisible}
|
visible={isVisible}
|
||||||
|
|||||||
@@ -18,13 +18,6 @@ export function RotationInputs() {
|
|||||||
return state.protagonist;
|
return state.protagonist;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!protagonist) return null;
|
|
||||||
|
|
||||||
const tankModelDefinition = awaitedModelDefinitions[protagonist.tank.id];
|
|
||||||
const turretModelDefinition =
|
|
||||||
tankModelDefinition.turrets[protagonist.turret.id];
|
|
||||||
const gunModelDefinition = turretModelDefinition.guns[protagonist.gun.id];
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
hullYawInput.current!.value = `${-Math.round(
|
hullYawInput.current!.value = `${-Math.round(
|
||||||
model.hullYaw * (180 / Math.PI),
|
model.hullYaw * (180 / Math.PI),
|
||||||
@@ -41,6 +34,13 @@ export function RotationInputs() {
|
|||||||
)}`;
|
)}`;
|
||||||
}, [model.gunPitch]);
|
}, [model.gunPitch]);
|
||||||
|
|
||||||
|
if (!protagonist) return null;
|
||||||
|
|
||||||
|
const tankModelDefinition = awaitedModelDefinitions[protagonist.tank.id];
|
||||||
|
const turretModelDefinition =
|
||||||
|
tankModelDefinition.turrets[protagonist.turret.id];
|
||||||
|
const gunModelDefinition = turretModelDefinition.guns[protagonist.gun.id];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Flex
|
<Flex
|
||||||
justify="center"
|
justify="center"
|
||||||
|
|||||||
Reference in new issue
Block a user