Add water reflection mode and foam contact limit to advanced rendering settings
This commit is contained in:
@@ -40,6 +40,7 @@ import {
|
|||||||
} from "../interactions/interaction-links";
|
} from "../interactions/interaction-links";
|
||||||
import {
|
import {
|
||||||
BOX_VERTEX_IDS,
|
BOX_VERTEX_IDS,
|
||||||
|
MAX_BOX_BRUSH_WATER_FOAM_CONTACT_LIMIT,
|
||||||
createBoxBrush,
|
createBoxBrush,
|
||||||
createDefaultBoxBrushGeometry,
|
createDefaultBoxBrushGeometry,
|
||||||
createDefaultBoxBrushFogSettings,
|
createDefaultBoxBrushFogSettings,
|
||||||
@@ -78,6 +79,7 @@ import {
|
|||||||
type SceneDocument
|
type SceneDocument
|
||||||
} from "./scene-document";
|
} from "./scene-document";
|
||||||
import {
|
import {
|
||||||
|
isAdvancedRenderingWaterReflectionMode,
|
||||||
createDefaultAdvancedRenderingSettings,
|
createDefaultAdvancedRenderingSettings,
|
||||||
isBoxVolumeRenderPath,
|
isBoxVolumeRenderPath,
|
||||||
isAdvancedRenderingShadowMapSize,
|
isAdvancedRenderingShadowMapSize,
|
||||||
@@ -201,6 +203,10 @@ function readOptionalPositiveInteger(value: unknown, label: string, fallback: nu
|
|||||||
return integerValue;
|
return integerValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function readOptionalPositiveIntegerWithMax(value: unknown, label: string, fallback: number, max: number): number {
|
||||||
|
return Math.min(readOptionalPositiveInteger(value, label, fallback), max);
|
||||||
|
}
|
||||||
|
|
||||||
function readOptionalAllowedValue<T>(value: unknown, label: string, fallback: T, guard: (candidate: unknown) => candidate is T): T {
|
function readOptionalAllowedValue<T>(value: unknown, label: string, fallback: T, guard: (candidate: unknown) => candidate is T): T {
|
||||||
if (value === undefined) {
|
if (value === undefined) {
|
||||||
return fallback;
|
return fallback;
|
||||||
@@ -270,6 +276,12 @@ function readAdvancedRenderingSettings(value: unknown): AdvancedRenderingSetting
|
|||||||
);
|
);
|
||||||
const fogPath = readOptionalAllowedValue(value.fogPath, "world.advancedRendering.fogPath", defaults.fogPath, isBoxVolumeRenderPath);
|
const fogPath = readOptionalAllowedValue(value.fogPath, "world.advancedRendering.fogPath", defaults.fogPath, isBoxVolumeRenderPath);
|
||||||
const waterPath = readOptionalAllowedValue(value.waterPath, "world.advancedRendering.waterPath", defaults.waterPath, isBoxVolumeRenderPath);
|
const waterPath = readOptionalAllowedValue(value.waterPath, "world.advancedRendering.waterPath", defaults.waterPath, isBoxVolumeRenderPath);
|
||||||
|
const waterReflectionMode = readOptionalAllowedValue(
|
||||||
|
value.waterReflectionMode,
|
||||||
|
"world.advancedRendering.waterReflectionMode",
|
||||||
|
defaults.waterReflectionMode,
|
||||||
|
isAdvancedRenderingWaterReflectionMode
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
enabled: readOptionalBoolean(value.enabled, "world.advancedRendering.enabled", defaults.enabled),
|
enabled: readOptionalBoolean(value.enabled, "world.advancedRendering.enabled", defaults.enabled),
|
||||||
@@ -342,7 +354,8 @@ function readAdvancedRenderingSettings(value: unknown): AdvancedRenderingSetting
|
|||||||
)
|
)
|
||||||
},
|
},
|
||||||
fogPath,
|
fogPath,
|
||||||
waterPath
|
waterPath,
|
||||||
|
waterReflectionMode
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,7 +396,13 @@ function readBoxBrushVolumeSettings(value: unknown, label: string): BoxBrushVolu
|
|||||||
`${label}.water.surfaceOpacity`,
|
`${label}.water.surfaceOpacity`,
|
||||||
defaults.surfaceOpacity
|
defaults.surfaceOpacity
|
||||||
),
|
),
|
||||||
waveStrength: readOptionalNonNegativeFiniteNumber(water.waveStrength, `${label}.water.waveStrength`, defaults.waveStrength)
|
waveStrength: readOptionalNonNegativeFiniteNumber(water.waveStrength, `${label}.water.waveStrength`, defaults.waveStrength),
|
||||||
|
foamContactLimit: readOptionalPositiveIntegerWithMax(
|
||||||
|
water.foamContactLimit,
|
||||||
|
`${label}.water.foamContactLimit`,
|
||||||
|
defaults.foamContactLimit,
|
||||||
|
MAX_BOX_BRUSH_WATER_FOAM_CONTACT_LIMIT
|
||||||
|
)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user