From 5539b70f8631fb8f902c62988587357ec9daf22a Mon Sep 17 00:00:00 2001 From: airslice Date: Wed, 28 Jun 2023 18:38:08 +0800 Subject: [PATCH] refactor: handle private property --- web/src/beta/lib/core/engines/Cesium/hooks.ts | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/web/src/beta/lib/core/engines/Cesium/hooks.ts b/web/src/beta/lib/core/engines/Cesium/hooks.ts index c9595eec9f..2fb0c5db4f 100644 --- a/web/src/beta/lib/core/engines/Cesium/hooks.ts +++ b/web/src/beta/lib/core/engines/Cesium/hooks.ts @@ -134,20 +134,20 @@ export default ({ // shadow map type ShadowMapBias = { - polygonOffsetFactor: number; - polygonOffsetUnits: number; - normalOffsetScale: number; - normalShading: boolean; - normalShadingSmooth: number; - depthBias: number; + polygonOffsetFactor?: number; + polygonOffsetUnits?: number; + normalOffsetScale?: number; + normalShading?: boolean; + normalShadingSmooth?: number; + depthBias?: number; }; useEffect(() => { const shadowMap = cesium?.current?.cesiumElement?.shadowMap as | (ShadowMap & { - _terrainBias: ShadowMapBias; - _pointBias: ShadowMapBias; - _primitiveBias: ShadowMapBias; + _terrainBias?: ShadowMapBias; + _pointBias?: ShadowMapBias; + _primitiveBias?: ShadowMapBias; }) | undefined; if (!shadowMap) return; @@ -183,9 +183,30 @@ export default ({ normalShadingSmooth: 0.1, depthBias: 0.0005, }; - Object.assign(shadowMap._terrainBias, defaultTerrainBias); - Object.assign(shadowMap._primitiveBias, defaultPrimitiveBias); - Object.assign(shadowMap._pointBias, defaultPointBias); + + if (!shadowMap._terrainBias) { + if (import.meta.env.DEV) { + throw new Error("`shadowMap._terrainBias` could not found"); + } + } else { + Object.assign(shadowMap._terrainBias, defaultTerrainBias); + } + + if (!shadowMap._primitiveBias) { + if (import.meta.env.DEV) { + throw new Error("`shadowMap._primitiveBias` could not found"); + } + } else { + Object.assign(shadowMap._primitiveBias, defaultPrimitiveBias); + } + + if (!shadowMap._pointBias) { + if (import.meta.env.DEV) { + throw new Error("`shadowMap._pointBias` could not found"); + } + } else { + Object.assign(shadowMap._pointBias, defaultPointBias); + } }, [ property?.atmosphere?.softShadow, property?.atmosphere?.shadowDarkness,