Add comprehensive tests for foliage blocker masks and update terrain resizing tests
This commit is contained in:
@@ -1,11 +1,14 @@
|
|||||||
import { describe, expect, it } from "vitest";
|
import { describe, expect, it } from "vitest";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
createTerrainFoliageBlockerMask,
|
||||||
createTerrainFoliageMask,
|
createTerrainFoliageMask,
|
||||||
getTerrainBounds,
|
getTerrainBounds,
|
||||||
|
getTerrainFoliageBlockerMaskValueAtSample,
|
||||||
getTerrainFoliageMask,
|
getTerrainFoliageMask,
|
||||||
getTerrainFoliageMaskValueAtSample,
|
getTerrainFoliageMaskValueAtSample,
|
||||||
getTerrainPaintWeightSampleOffset,
|
getTerrainPaintWeightSampleOffset,
|
||||||
|
sampleTerrainFoliageBlockerMaskAtWorldPosition,
|
||||||
sampleTerrainFoliageMaskAtWorldPosition,
|
sampleTerrainFoliageMaskAtWorldPosition,
|
||||||
updateTerrainBoundsCacheAfterHeightPatch,
|
updateTerrainBoundsCacheAfterHeightPatch,
|
||||||
resizeTerrainGrid,
|
resizeTerrainGrid,
|
||||||
@@ -47,7 +50,12 @@ describe("terrain grid resizing", () => {
|
|||||||
resolutionZ: 2,
|
resolutionZ: 2,
|
||||||
values: [0, 1, 0, 0.5]
|
values: [0, 1, 0, 0.5]
|
||||||
})
|
})
|
||||||
}
|
},
|
||||||
|
foliageBlockerMask: createTerrainFoliageBlockerMask({
|
||||||
|
resolutionX: 2,
|
||||||
|
resolutionZ: 2,
|
||||||
|
values: [0, 0.25, 0.5, 1]
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
const resizedTerrain = resizeTerrainGrid(terrain, {
|
const resizedTerrain = resizeTerrainGrid(terrain, {
|
||||||
@@ -72,6 +80,9 @@ describe("terrain grid resizing", () => {
|
|||||||
expect(resizedMask?.resolutionX).toBe(3);
|
expect(resizedMask?.resolutionX).toBe(3);
|
||||||
expect(resizedMask?.resolutionZ).toBe(3);
|
expect(resizedMask?.resolutionZ).toBe(3);
|
||||||
expect(resizedMask?.values[4]).toBeCloseTo(0.375);
|
expect(resizedMask?.values[4]).toBeCloseTo(0.375);
|
||||||
|
expect(resizedTerrain.foliageBlockerMask.resolutionX).toBe(3);
|
||||||
|
expect(resizedTerrain.foliageBlockerMask.resolutionZ).toBe(3);
|
||||||
|
expect(resizedTerrain.foliageBlockerMask.values[4]).toBeCloseTo(0.4375);
|
||||||
expect(terrain.position).toEqual({
|
expect(terrain.position).toEqual({
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 1,
|
y: 1,
|
||||||
@@ -81,6 +92,45 @@ describe("terrain grid resizing", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("terrain foliage blocker masks", () => {
|
||||||
|
it("creates, clones, normalizes, and samples blocker mask values", () => {
|
||||||
|
const terrain = createTerrain({
|
||||||
|
id: "terrain-foliage-blocker-mask-sample",
|
||||||
|
position: { x: 10, y: 0, z: 20 },
|
||||||
|
sampleCountX: 2,
|
||||||
|
sampleCountZ: 2,
|
||||||
|
cellSize: 2,
|
||||||
|
foliageBlockerMask: createTerrainFoliageBlockerMask({
|
||||||
|
resolutionX: 2,
|
||||||
|
resolutionZ: 2,
|
||||||
|
values: [0, 1.2, -1, 0.5]
|
||||||
|
})
|
||||||
|
});
|
||||||
|
const clonedTerrain = createTerrain(terrain);
|
||||||
|
|
||||||
|
expect(terrain.foliageBlockerMask.values).toEqual([0, 1, 0, 0.5]);
|
||||||
|
expect(clonedTerrain.foliageBlockerMask).toEqual(
|
||||||
|
terrain.foliageBlockerMask
|
||||||
|
);
|
||||||
|
expect(clonedTerrain.foliageBlockerMask).not.toBe(
|
||||||
|
terrain.foliageBlockerMask
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
getTerrainFoliageBlockerMaskValueAtSample(
|
||||||
|
terrain.foliageBlockerMask,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
)
|
||||||
|
).toBe(0.5);
|
||||||
|
expect(
|
||||||
|
sampleTerrainFoliageBlockerMaskAtWorldPosition(terrain, 11, 21)
|
||||||
|
).toBeCloseTo(0.375);
|
||||||
|
expect(
|
||||||
|
sampleTerrainFoliageBlockerMaskAtWorldPosition(terrain, 99, 99)
|
||||||
|
).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("terrain foliage masks", () => {
|
describe("terrain foliage masks", () => {
|
||||||
it("creates, clones, normalizes, and samples foliage mask values", () => {
|
it("creates, clones, normalizes, and samples foliage mask values", () => {
|
||||||
const foliageLayerId = "foliage-layer-sample";
|
const foliageLayerId = "foliage-layer-sample";
|
||||||
|
|||||||
Reference in New Issue
Block a user