Improve foliage instanced renderer tests with target support and state validation

This commit is contained in:
2026-05-03 13:27:47 +02:00
parent 6dd08215ef
commit 8d6d53d5a6

View File

@@ -41,11 +41,14 @@ import { FoliageInstancedRenderer } from "../../src/foliage/foliage-instanced-re
const TEST_TERRAIN_ID = "terrain-renderer"; const TEST_TERRAIN_ID = "terrain-renderer";
const TEST_LAYER_ID = "foliage-layer-renderer"; const TEST_LAYER_ID = "foliage-layer-renderer";
function createCamera(position: { x: number; y: number; z: number }) { function createCamera(
position: { x: number; y: number; z: number },
target: { x: number; y: number; z: number } = { x: 8, y: 0, z: 8 }
) {
const camera = new PerspectiveCamera(60, 1, 0.1, 500); const camera = new PerspectiveCamera(60, 1, 0.1, 500);
camera.position.set(position.x, position.y, position.z); camera.position.set(position.x, position.y, position.z);
camera.lookAt(8, 0, 8); camera.lookAt(target.x, target.y, target.z);
camera.updateProjectionMatrix(); camera.updateProjectionMatrix();
camera.updateMatrixWorld(true); camera.updateMatrixWorld(true);
@@ -168,6 +171,23 @@ describe("FoliageInstancedRenderer", () => {
true true
); );
renderer.updateView(
createCamera(
{ x: 8, y: 8, z: 8 },
{
x: 10,
y: 0,
z: 8
}
)
);
await Promise.resolve();
expect(renderer.group.children[0]).toBe(activeBatchRoot);
expect(getInstancedMeshes(renderer.group)).toEqual(instancedMeshes);
expect(loaderState.loadCalls).toHaveLength(initialLoadCallCount);
expect(rebuildCount).toBe(initialRebuildCount);
renderer.updateView(createCamera({ x: 68, y: 8, z: 8 })); renderer.updateView(createCamera({ x: 68, y: 8, z: 8 }));
await Promise.resolve(); await Promise.resolve();