Add water reflection mode and foam contact limit handling in scene document JSON tests

This commit is contained in:
2026-04-07 06:53:28 +02:00
parent 4fe105aa1b
commit 0609882a16

View File

@@ -150,7 +150,8 @@ describe("scene document JSON", () => {
water: {
colorHex: "#2f79c4",
surfaceOpacity: 0.65,
waveStrength: 0.35
waveStrength: 0.35,
foamContactLimit: 9
}
}
});
@@ -254,6 +255,7 @@ describe("scene document JSON", () => {
},
fogPath: "quality",
waterPath: "performance",
waterReflectionMode: "world",
depthOfField: {
enabled: true,
focusDistance: 12,
@@ -265,6 +267,52 @@ describe("scene document JSON", () => {
expect(parseSceneDocumentJson(serializeSceneDocument(document))).toEqual(document);
});
it("defaults missing water reflection mode and clamps legacy foam limits during migration", () => {
const migratedDocument = migrateSceneDocument({
version: SCENE_DOCUMENT_VERSION,
name: "Legacy Water Settings",
world: {
...createEmptySceneDocument().world,
advancedRendering: {
...createEmptySceneDocument().world.advancedRendering,
enabled: true,
waterPath: "quality"
}
},
materials: STARTER_MATERIAL_LIBRARY.reduce<Record<string, (typeof STARTER_MATERIAL_LIBRARY)[number]>>((registry, material) => {
registry[material.id] = material;
return registry;
}, {}),
textures: {},
assets: {},
brushes: {
"brush-water-legacy": {
...createBoxBrush({ id: "brush-water-legacy" }),
volume: {
mode: "water",
water: {
colorHex: "#2f79c4",
surfaceOpacity: 0.65,
waveStrength: 0.35,
foamContactLimit: 999
}
}
}
},
modelInstances: {},
entities: {},
interactionLinks: {}
} as unknown);
expect(migratedDocument.world.advancedRendering.waterReflectionMode).toBe("none");
expect(migratedDocument.brushes["brush-water-legacy"]?.volume).toEqual({
mode: "water",
water: expect.objectContaining({
foamContactLimit: 24
})
});
});
it("migrates legacy documents without advanced rendering settings to defaults", () => {
const emptyScene = createEmptySceneDocument({ name: "Legacy Advanced Rendering Scene" });
const { advancedRendering: _advancedRendering, ...legacyWorld } = emptyScene.world;