use correct squareSize in TerrainBlock, account for missing coordinates

This commit is contained in:
Brian Beck 2025-11-19 01:50:30 -05:00
parent 70c2a08eec
commit 7d78be42af
2 changed files with 12 additions and 3 deletions

View file

@ -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);

View file

@ -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] {