Feat: Add foliage wind settings for advanced rendering

Implements controls and logic for managing foliage wind parameters (enablement, strength, speed, and direction) in the advanced rendering settings. Updates serialization tests to handle these new fields and migration from older document versions.
This commit is contained in:
2026-05-21 06:06:32 +02:00
parent 18ff8464d6
commit c7abf10930
2 changed files with 269 additions and 1 deletions

View File

@@ -1172,7 +1172,7 @@ describe("scene document JSON", () => {
expect(
migratedDocument.splineCorridorJunctions[junction.id]?.shapeMode
).toBe("straight");
expect(LENS_FLARE_SCENE_DOCUMENT_VERSION).toBe(SCENE_DOCUMENT_VERSION);
expect(FOLIAGE_WIND_SCENE_DOCUMENT_VERSION).toBe(SCENE_DOCUMENT_VERSION);
});
it("round-trips spline corridor junctions", () => {
@@ -1865,6 +1865,33 @@ describe("scene document JSON", () => {
);
});
it("migrates v111 scene documents without foliage wind settings to defaults", () => {
const emptyScene = createEmptySceneDocument({
name: "Legacy Foliage Wind Scene"
});
const legacyDocument = JSON.parse(
serializeSceneDocument(emptyScene)
) as Record<string, any>;
const legacyFoliage =
legacyDocument.world.advancedRendering.foliage as Record<
string,
unknown
>;
legacyDocument.version = LENS_FLARE_SCENE_DOCUMENT_VERSION;
delete legacyFoliage.windEnabled;
delete legacyFoliage.windStrength;
delete legacyFoliage.windSpeed;
delete legacyFoliage.windDirectionDegrees;
const migratedDocument = migrateSceneDocument(legacyDocument);
expect(migratedDocument.version).toBe(SCENE_DOCUMENT_VERSION);
expect(migratedDocument.world.advancedRendering.foliage).toEqual(
emptyScene.world.advancedRendering.foliage
);
});
it("defaults missing water reflection mode and clamps legacy foam limits during migration", () => {
const migratedDocument = migrateSceneDocument({
version: SCENE_DOCUMENT_VERSION,