Add validation for foliage quality settings in world document

This commit is contained in:
2026-05-02 10:49:30 +02:00
parent e4892a7b0c
commit b6b4232499

View File

@@ -87,6 +87,11 @@ import {
isAdvancedRenderingShadowType, isAdvancedRenderingShadowType,
isBoxVolumeRenderPath, isBoxVolumeRenderPath,
isAdvancedRenderingToneMappingMode, isAdvancedRenderingToneMappingMode,
isFoliageQualityShadowMode,
MIN_FOLIAGE_QUALITY_DENSITY_MULTIPLIER,
MAX_FOLIAGE_QUALITY_DENSITY_MULTIPLIER,
MIN_FOLIAGE_QUALITY_MAX_DISTANCE_MULTIPLIER,
MAX_FOLIAGE_QUALITY_MAX_DISTANCE_MULTIPLIER,
isHexColorString, isHexColorString,
isWorldShaderSkyPresetId, isWorldShaderSkyPresetId,
type WorldCelestialOrbitAuthoringSettings, type WorldCelestialOrbitAuthoringSettings,
@@ -1360,6 +1365,62 @@ function validateWorldSettings(
); );
} }
if (!isBoolean(advancedRendering.foliage.enabled)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-foliage-quality-enabled",
"Foliage quality enabled must be a boolean.",
"world.advancedRendering.foliage.enabled"
)
);
}
if (
!isFiniteNumberInRange(
advancedRendering.foliage.densityMultiplier,
MIN_FOLIAGE_QUALITY_DENSITY_MULTIPLIER,
MAX_FOLIAGE_QUALITY_DENSITY_MULTIPLIER
)
) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-foliage-quality-density-multiplier",
"Foliage density multiplier must be a finite number between 0 and 2.",
"world.advancedRendering.foliage.densityMultiplier"
)
);
}
if (
!isFiniteNumberInRange(
advancedRendering.foliage.maxDistanceMultiplier,
MIN_FOLIAGE_QUALITY_MAX_DISTANCE_MULTIPLIER,
MAX_FOLIAGE_QUALITY_MAX_DISTANCE_MULTIPLIER
)
) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-foliage-quality-max-distance-multiplier",
"Foliage max distance multiplier must be a finite number between 0.1 and 2.",
"world.advancedRendering.foliage.maxDistanceMultiplier"
)
);
}
if (!isFoliageQualityShadowMode(advancedRendering.foliage.shadows)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-foliage-quality-shadows",
"Foliage shadows must be off, near, or full.",
"world.advancedRendering.foliage.shadows"
)
);
}
if (!isBoxVolumeRenderPath(advancedRendering.fogPath)) { if (!isBoxVolumeRenderPath(advancedRendering.fogPath)) {
diagnostics.push( diagnostics.push(
createDiagnostic( createDiagnostic(