From b8cff43545e25cade89a0d9f041bb5572ccd327e Mon Sep 17 00:00:00 2001 From: Tom Boullay Date: Wed, 27 May 2026 01:01:25 +0200 Subject: [PATCH] fix(environment): disable fog by default --- src/components/three/models/SimpleModel.tsx | 26 +++++++++++++++------ src/data/world/fogConfig.ts | 2 +- src/world/Environment.tsx | 8 +++---- src/world/GameMap.tsx | 8 ++++++- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/components/three/models/SimpleModel.tsx b/src/components/three/models/SimpleModel.tsx index 754c3e4..d5cbf86 100644 --- a/src/components/three/models/SimpleModel.tsx +++ b/src/components/three/models/SimpleModel.tsx @@ -1,8 +1,22 @@ import { useEffect, useMemo } from "react"; +import * as THREE from "three"; import { useLoggedGLTF } from "@/hooks/three/useLoggedGLTF"; import type { ModelTransformProps, Vector3Tuple } from "@/types/three/three"; import { disposeObject3D } from "@/utils/three/dispose"; +function applyShadowSettings( + object: THREE.Object3D, + castShadow: boolean, + receiveShadow: boolean, +): void { + object.traverse((child) => { + if (!(child instanceof THREE.Mesh)) return; + + child.castShadow = castShadow; + child.receiveShadow = receiveShadow; + }); +} + export interface SimpleModelConfig extends ModelTransformProps { modelPath: string; castShadow?: boolean; @@ -30,6 +44,10 @@ export function SimpleModel({ }); const model = useMemo(() => scene.clone(true), [scene]); + useEffect(() => { + applyShadowSettings(model, castShadow, receiveShadow); + }, [castShadow, model, receiveShadow]); + useEffect(() => { return () => { disposeObject3D(model); @@ -41,13 +59,7 @@ export function SimpleModel({ return ( - {children ?? ( - - )} + {children ?? } ); } diff --git a/src/data/world/fogConfig.ts b/src/data/world/fogConfig.ts index 93a5d59..dbc9954 100644 --- a/src/data/world/fogConfig.ts +++ b/src/data/world/fogConfig.ts @@ -3,7 +3,7 @@ import { TERRAIN_COLORS } from "@/data/world/terrainConfig"; export type FogMode = "linear" | "exp2"; export const FOG_CONFIG = { - enabled: true, + enabled: false, mode: "exp2" as FogMode, color: "#dfe7d8", near: 32, diff --git a/src/world/Environment.tsx b/src/world/Environment.tsx index 3679c45..7ca2a23 100644 --- a/src/world/Environment.tsx +++ b/src/world/Environment.tsx @@ -9,7 +9,7 @@ import { GAME_SCENE_SKY_MODEL_SCALE, PHYSICS_SCENE_BACKGROUND_COLOR, } from "@/data/world/environmentConfig"; -import { FOG_CONFIG, FOG_LIGHTING_COLOR_MIX } from "@/data/world/fogConfig"; +import { FOG_LIGHTING_COLOR_MIX } from "@/data/world/fogConfig"; import { useCameraMode } from "@/hooks/debug/useCameraMode"; import { useSceneMode } from "@/hooks/debug/useSceneMode"; import { useFogSettings } from "@/hooks/world/useFogSettings"; @@ -57,15 +57,13 @@ export function Environment(): React.JSX.Element { return ( <> - {FOG_CONFIG.enabled && - fogEnabled && + {fogEnabled && sceneMode === "game" && cameraMode === "player" && fog.mode === "linear" ? ( ) : null} - {FOG_CONFIG.enabled && - fogEnabled && + {fogEnabled && sceneMode === "game" && cameraMode === "player" && fog.mode === "exp2" ? ( diff --git a/src/world/GameMap.tsx b/src/world/GameMap.tsx index cfb99db..8de9b7b 100644 --- a/src/world/GameMap.tsx +++ b/src/world/GameMap.tsx @@ -391,7 +391,13 @@ function FallbackMapNode({ node }: { node: MapNode }): React.JSX.Element { const normalizedScale = normalizeMapScale(scale); return ( - +