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);
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user