diff --git a/tests/domain/scene-document-validation.test.ts b/tests/domain/scene-document-validation.test.ts index fda20423..030f11db 100644 --- a/tests/domain/scene-document-validation.test.ts +++ b/tests/domain/scene-document-validation.test.ts @@ -1894,7 +1894,11 @@ describe("validateSceneDocument", () => { enabled: "yes", densityMultiplier: 9, maxDistanceMultiplier: 0, - shadows: "close" + shadows: "close", + windEnabled: "yes", + windStrength: -0.1, + windSpeed: Number.NaN, + windDirectionDegrees: 420 } } as any; @@ -2070,6 +2074,22 @@ describe("validateSceneDocument", () => { code: "invalid-foliage-quality-shadows", path: "world.advancedRendering.foliage.shadows" }), + expect.objectContaining({ + code: "invalid-foliage-quality-wind-enabled", + path: "world.advancedRendering.foliage.windEnabled" + }), + expect.objectContaining({ + code: "invalid-foliage-quality-wind-strength", + path: "world.advancedRendering.foliage.windStrength" + }), + expect.objectContaining({ + code: "invalid-foliage-quality-wind-speed", + path: "world.advancedRendering.foliage.windSpeed" + }), + expect.objectContaining({ + code: "invalid-foliage-quality-wind-direction", + path: "world.advancedRendering.foliage.windDirectionDegrees" + }), expect.objectContaining({ code: "invalid-advanced-rendering-fog-path", path: "world.advancedRendering.fogPath" diff --git a/tests/domain/world-settings.test.ts b/tests/domain/world-settings.test.ts index f80a35e1..35260622 100644 --- a/tests/domain/world-settings.test.ts +++ b/tests/domain/world-settings.test.ts @@ -196,22 +196,50 @@ describe("world settings helpers", () => { expect(areWorldSettingsEqual(left, right)).toBe(false); }); + it("treats foliage wind settings as part of authored world equality", () => { + const left = createDefaultWorldSettings(); + const right = cloneWorldSettings(left); + + right.advancedRendering.foliage.windDirectionDegrees += 15; + + expect(areWorldSettingsEqual(left, right)).toBe(false); + }); + it("bounds resolved foliage quality multipliers", () => { expect( resolveFoliageQualitySettings({ enabled: true, densityMultiplier: 9, maxDistanceMultiplier: 0.01, - shadows: "full" + shadows: "full", + windEnabled: true, + windStrength: 9, + windSpeed: -1, + windDirectionDegrees: -45 }) ).toEqual({ enabled: true, densityMultiplier: 8, maxDistanceMultiplier: 0.1, - shadows: "full" + shadows: "full", + windEnabled: true, + windStrength: 4, + windSpeed: 0, + windDirectionDegrees: 315 }); }); + it("defaults missing legacy foliage wind settings during resolution", () => { + expect( + resolveFoliageQualitySettings({ + enabled: true, + densityMultiplier: 1, + maxDistanceMultiplier: 1, + shadows: "near" + } as any) + ).toEqual(createDefaultWorldSettings().advancedRendering.foliage); + }); + it("treats the scene project-time lighting toggle as part of authored world equality", () => { const left = createDefaultWorldSettings(); const right = cloneWorldSettings(left); diff --git a/tests/serialization/scene-document-json.test.ts b/tests/serialization/scene-document-json.test.ts index 2f9d5b3e..7757ba57 100644 --- a/tests/serialization/scene-document-json.test.ts +++ b/tests/serialization/scene-document-json.test.ts @@ -44,6 +44,7 @@ import { FOLIAGE_FOUNDATION_SCENE_DOCUMENT_VERSION, FOLIAGE_MASKS_SCENE_DOCUMENT_VERSION, FOLIAGE_QUALITY_SCENE_DOCUMENT_VERSION, + FOLIAGE_WIND_SCENE_DOCUMENT_VERSION, IMPORTED_MODEL_COLLIDERS_SCENE_DOCUMENT_VERSION, LENS_FLARE_SCENE_DOCUMENT_VERSION, LOCAL_LIGHTS_AND_SKYBOX_SCENE_DOCUMENT_VERSION, @@ -1561,7 +1562,11 @@ describe("scene document JSON", () => { enabled: true, densityMultiplier: 0.75, maxDistanceMultiplier: 1.25, - shadows: "near" + shadows: "near", + windEnabled: true, + windStrength: 1.4, + windSpeed: 1.8, + windDirectionDegrees: 120 }, fogPath: "quality", waterPath: "performance",