diff --git a/src/components/TerrainBlock.tsx b/src/components/TerrainBlock.tsx index 191ea4a8..a46ed228 100644 --- a/src/components/TerrainBlock.tsx +++ b/src/components/TerrainBlock.tsx @@ -194,6 +194,14 @@ function TerrainMaterial({ export function TerrainBlock({ object }: { object: ConsoleObject }) { const terrainFile: string = getProperty(object, "terrainFile").value; + const squareSize = useMemo(() => { + const squareSizeString: string | undefined = getProperty( + object, + "squareSize" + )?.value; + return squareSizeString ? parseInt(squareSizeString, 10) : 8; + }, [object]); + const emptySquares: number[] = useMemo(() => { const emptySquaresString: string | undefined = getProperty( object, @@ -210,11 +218,12 @@ export function TerrainBlock({ object }: { object: ConsoleObject }) { const q = useMemo(() => getRotation(object), [object]); const planeGeometry = useMemo(() => { - const geometry = new PlaneGeometry(2048, 2048, 256, 256); + const size = squareSize * 256; + const geometry = new PlaneGeometry(size, size, 256, 256); geometry.rotateX(-Math.PI / 2); geometry.rotateY(-Math.PI / 2); return geometry; - }, []); + }, [squareSize]); const { data: terrain } = useTerrain(terrainFile); diff --git a/src/mission.ts b/src/mission.ts index d812ea19..9be72ce9 100644 --- a/src/mission.ts +++ b/src/mission.ts @@ -213,7 +213,7 @@ export function getProperty(obj: ConsoleObject, name: string) { export function getPosition(obj: ConsoleObject): [number, number, number] { const position = getProperty(obj, "position")?.value ?? "0 0 0"; const [x, z, y] = position.split(" ").map((s) => parseFloat(s)); - return [x, y, z]; + return [x || 0, y || 0, z || 0]; } export function getScale(obj: ConsoleObject): [number, number, number] {