Test: Skip foliage generation in globally blocked terrain areas

This commit is contained in:
2026-05-02 11:32:49 +02:00
parent cad4dc7fc1
commit 3f41d0da30

View File

@@ -2,6 +2,7 @@ import { describe, expect, it } from "vitest";
import { import {
createTerrain, createTerrain,
createTerrainFoliageBlockerMask,
createTerrainFoliageMask, createTerrainFoliageMask,
type Terrain type Terrain
} from "../../src/document/terrains"; } from "../../src/document/terrains";
@@ -217,6 +218,31 @@ describe("foliage scatter generation", () => {
expect(quarterMask.instanceCount).toBeGreaterThan(0); expect(quarterMask.instanceCount).toBeGreaterThan(0);
}); });
it("skips candidates in globally blocked terrain areas", () => {
const unblocked = createMaskedTerrain({ maskValue: 1 });
const blocked = createTerrain({
...unblocked,
foliageBlockerMask: createTerrainFoliageBlockerMask({
resolutionX: unblocked.sampleCountX,
resolutionZ: unblocked.sampleCountZ,
values: new Array(
unblocked.sampleCountX * unblocked.sampleCountZ
).fill(1)
})
});
const unblockedResult = generateForFixture({
terrain: unblocked,
maxInstancesPerChunk: 1024
});
const blockedResult = generateForFixture({
terrain: blocked,
maxInstancesPerChunk: 1024
});
expect(unblockedResult.instanceCount).toBeGreaterThan(0);
expect(blockedResult).toEqual({ chunks: [], instanceCount: 0 });
});
it("uses layer density to affect generated instance counts", () => { it("uses layer density to affect generated instance counts", () => {
const lowDensity = generateForFixture({ const lowDensity = generateForFixture({
layer: createTestLayer({ density: 0.5 }), layer: createTestLayer({ density: 0.5 }),