Feat(tests): Add validation and serialization support for foliage wind settings
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user