perf(map): snap assets to terrain
This commit is contained in:
@@ -1,4 +1,11 @@
|
||||
import { EcoleModel } from "@/components/three/models/generated/EcoleModel";
|
||||
import { EcoleModel } from "@/components/three/world/EcoleModel";
|
||||
import { FermeVerticaleModel } from "@/components/three/world/FermeVerticaleModel";
|
||||
import { GenerateurModel } from "@/components/three/world/GenerateurModel";
|
||||
import { LafabrikModel } from "@/components/three/world/LafabrikModel";
|
||||
import {
|
||||
normalizeMapScale,
|
||||
useTerrainSnappedPosition,
|
||||
} from "@/hooks/three/useTerrainHeight";
|
||||
import type { MapNode } from "@/types/editor/editor";
|
||||
|
||||
interface GeneratedMapNodeInstanceProps {
|
||||
@@ -10,12 +17,48 @@ export function GeneratedMapNodeInstance({
|
||||
node,
|
||||
onLoaded,
|
||||
}: GeneratedMapNodeInstanceProps): React.JSX.Element | null {
|
||||
const position = useTerrainSnappedPosition(node.position);
|
||||
const scale = normalizeMapScale(node.scale);
|
||||
|
||||
if (node.name === "ecole") {
|
||||
return (
|
||||
<EcoleModel
|
||||
position={node.position}
|
||||
position={position}
|
||||
rotation={node.rotation}
|
||||
scale={node.scale}
|
||||
scale={scale}
|
||||
onLoaded={onLoaded}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (node.name === "fermeverticale") {
|
||||
return (
|
||||
<FermeVerticaleModel
|
||||
position={position}
|
||||
rotation={node.rotation}
|
||||
scale={scale}
|
||||
onLoaded={onLoaded}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (node.name === "generateur") {
|
||||
return (
|
||||
<GenerateurModel
|
||||
position={position}
|
||||
rotation={node.rotation}
|
||||
scale={scale}
|
||||
onLoaded={onLoaded}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (node.name === "lafabrik") {
|
||||
return (
|
||||
<LafabrikModel
|
||||
position={position}
|
||||
rotation={node.rotation}
|
||||
scale={scale}
|
||||
onLoaded={onLoaded}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
const GENERATED_MAP_MODEL_NAMES = new Set(["ecole"]);
|
||||
const GENERATED_MAP_MODEL_NAMES = new Set([
|
||||
"ecole",
|
||||
"fermeverticale",
|
||||
"generateur",
|
||||
"lafabrik",
|
||||
]);
|
||||
|
||||
export function isGeneratedMapModelName(name: string): boolean {
|
||||
return GENERATED_MAP_MODEL_NAMES.has(name);
|
||||
|
||||
Reference in New Issue
Block a user