From c0548e686fc5fcebd741379d135deb6c7438fd29 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 31 Jan 2026 04:45:36 +0000 Subject: [PATCH] fix: Traverse terrain mesh children when toggling shadows The terrain.mesh is a THREE.Group containing chunk meshes. Setting receiveShadow directly on the Group does not propagate to children. Fix uses traverse() to set receiveShadow on each mesh individually. https://claude.ai/code/session_01346VTacpLDyriDTNEn9RN3 --- src/rendering/EnvironmentManager.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rendering/EnvironmentManager.ts b/src/rendering/EnvironmentManager.ts index 49a4c7ce..6a5a8a66 100644 --- a/src/rendering/EnvironmentManager.ts +++ b/src/rendering/EnvironmentManager.ts @@ -454,8 +454,12 @@ export class EnvironmentManager { // Don't toggle castShadow - it must stay true to keep shadow map depth texture valid // The renderer.shadowMap.enabled flag controls whether shadows are actually rendered - // Toggle shadow receiving on terrain - this.terrain.mesh.receiveShadow = enabled; + // Toggle shadow receiving on terrain chunks (mesh is a Group containing chunk meshes) + this.terrain.mesh.traverse((child) => { + if ((child as THREE.Mesh).isMesh) { + child.receiveShadow = enabled; + } + }); // Mark shadow map for immediate update when enabling if (enabled) {