mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-25 03:29:51 +01:00
module selection
This commit is contained in:
1 parent
965acadc3f
commit
648344d7cc
2 files changed
+28
-10
No files matched your search
@@ -1,3 +1,7 @@
|
|||||||
|
import {
|
||||||
|
VisualChanges_TankPart,
|
||||||
|
type StageParameters,
|
||||||
|
} from "@protos/blitz_static_tank_upgrade_single_stage";
|
||||||
import { OrbitControls } from "@react-three/drei";
|
import { OrbitControls } from "@react-three/drei";
|
||||||
import { Canvas, useLoader } from "@react-three/fiber";
|
import { Canvas, useLoader } from "@react-three/fiber";
|
||||||
import { Mesh, MeshStandardMaterial } from "three";
|
import { Mesh, MeshStandardMaterial } from "three";
|
||||||
@@ -5,7 +9,11 @@ import { GLTFLoader } from "three-stdlib";
|
|||||||
import { useProtagonist } from "../../hooks/useProtagonist";
|
import { useProtagonist } from "../../hooks/useProtagonist";
|
||||||
import styles from "./index.module.css";
|
import styles from "./index.module.css";
|
||||||
|
|
||||||
export function TankopediaSandbox() {
|
interface TankopediaSandboxProps {
|
||||||
|
parameters: StageParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function TankopediaSandbox({ parameters }: TankopediaSandboxProps) {
|
||||||
return (
|
return (
|
||||||
<div className={styles.wrapper}>
|
<div className={styles.wrapper}>
|
||||||
<div className={styles.sandbox}>
|
<div className={styles.sandbox}>
|
||||||
@@ -15,23 +23,33 @@ export function TankopediaSandbox() {
|
|||||||
className={styles.canvas}
|
className={styles.canvas}
|
||||||
frameloop="demand"
|
frameloop="demand"
|
||||||
>
|
>
|
||||||
{!import.meta.env.SSR && <Content />}
|
{!import.meta.env.SSR && <Content parameters={parameters} />}
|
||||||
</Canvas>
|
</Canvas>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Content() {
|
function Content({ parameters }: TankopediaSandboxProps) {
|
||||||
const tank = useProtagonist();
|
const tank = useProtagonist();
|
||||||
|
|
||||||
const turret = useLoader(
|
const selectedTurret = parameters.visual_changes.find(
|
||||||
GLTFLoader,
|
({ tank_part }) => tank_part === VisualChanges_TankPart.TANK_PART_TURRET,
|
||||||
`/models/tanks/${tank.id}/turret_01.glb`,
|
)!.name;
|
||||||
);
|
const selectedGun = parameters.visual_changes.find(
|
||||||
const gun = useLoader(GLTFLoader, `/models/tanks/${tank.id}/gun_01.glb`);
|
({ tank_part }) => tank_part === VisualChanges_TankPart.TANK_PART_GUN,
|
||||||
|
)!.name;
|
||||||
|
|
||||||
const hull = useLoader(GLTFLoader, `/models/tanks/${tank.id}/hull.glb`);
|
const hull = useLoader(GLTFLoader, `/models/tanks/${tank.id}/hull.glb`);
|
||||||
const chassis = useLoader(GLTFLoader, `/models/tanks/${tank.id}/chassis.glb`);
|
const chassis = useLoader(GLTFLoader, `/models/tanks/${tank.id}/chassis.glb`);
|
||||||
|
const turret = useLoader(
|
||||||
|
GLTFLoader,
|
||||||
|
`/models/tanks/${tank.id}/${selectedTurret}.glb`,
|
||||||
|
);
|
||||||
|
const gun = useLoader(
|
||||||
|
GLTFLoader,
|
||||||
|
`/models/tanks/${tank.id}/${selectedGun}.glb`,
|
||||||
|
);
|
||||||
|
|
||||||
const gltfs = [turret, gun, hull, chassis];
|
const gltfs = [turret, gun, hull, chassis];
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export const Page = withErrorWrapper(
|
|||||||
const protagonist = Tankopedia.use((state) => state.protagonist);
|
const protagonist = Tankopedia.use((state) => state.protagonist);
|
||||||
const protagonistEquipment = useEquipment(protagonistTank.tank!);
|
const protagonistEquipment = useEquipment(protagonistTank.tank!);
|
||||||
|
|
||||||
const { characteristics } = useMemo(
|
const { characteristics, parameters } = useMemo(
|
||||||
() =>
|
() =>
|
||||||
computeCharacteristics(
|
computeCharacteristics(
|
||||||
protagonistTank,
|
protagonistTank,
|
||||||
@@ -41,7 +41,7 @@ export const Page = withErrorWrapper(
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={styles.sandbox}>
|
<div className={styles.sandbox}>
|
||||||
<TankopediaSandbox />
|
<TankopediaSandbox parameters={parameters} />
|
||||||
<TankopediaCharacteristics characteristics={characteristics} />
|
<TankopediaCharacteristics characteristics={characteristics} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in new issue
Block a user