From e3c1a64d556b278e1443e4762955fd95c56e04fb Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 2 May 2026 04:59:10 +0200 Subject: [PATCH] Add test case to verify local up vector remains vertical when alignToNormal is disabled --- tests/domain/foliage-render-batches.test.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/domain/foliage-render-batches.test.ts b/tests/domain/foliage-render-batches.test.ts index 13c6da52..c7a33a70 100644 --- a/tests/domain/foliage-render-batches.test.ts +++ b/tests/domain/foliage-render-batches.test.ts @@ -147,4 +147,20 @@ describe("foliage render batch helpers", () => { expect(transformedUp.y).toBeCloseTo(normal.y, 6); expect(transformedUp.z).toBeCloseTo(normal.z, 6); }); + + it("keeps local up vertical on slopes when alignToNormal is disabled", () => { + const matrix = createFoliageInstanceMatrix( + createInstance({ + normal: { x: 1, y: 1, z: 0 }, + yawRadians: Math.PI * 0.5, + alignToNormal: 0 + }) + ); + const rotation = new Quaternion().setFromRotationMatrix(matrix); + const transformedUp = new Vector3(0, 1, 0).applyQuaternion(rotation); + + expect(transformedUp.x).toBeCloseTo(0, 6); + expect(transformedUp.y).toBeCloseTo(1, 6); + expect(transformedUp.z).toBeCloseTo(0, 6); + }); });