feat(environment): add adaptive atmospheric fog
🔍 Lint / 🪄 Check lint (pull_request) Has been cancelled
🔍 Lint / 🎨 Check format (pull_request) Has been cancelled
🔍 Lint / 🔎 Typecheck (pull_request) Has been cancelled
📊 Quality / 🔒 Security Audit (pull_request) Has been cancelled
📊 Quality / 📋 Dependency Freshness (pull_request) Has been cancelled
📊 Quality / 📦 Bundle Size (pull_request) Has been cancelled
🔍 Lint / 🏗 Build (pull_request) Has been cancelled

This commit is contained in:
Tom Boullay
2026-05-27 00:54:17 +02:00
parent ab3943eef3
commit 25e0f7e062
10 changed files with 148 additions and 28 deletions
+29 -1
View File
@@ -1,7 +1,9 @@
import { CLOUD_BOUNDS } from "@/data/world/cloudConfig";
import { FOG_BOUNDS, type FogMode } from "@/data/world/fogConfig";
import { WIND_BOUNDS } from "@/data/world/windConfig";
import { useDebugFolder } from "@/hooks/debug/useDebugFolder";
import { useWorldSettingsStore } from "@/managers/stores/useWorldSettingsStore";
import { Debug } from "@/utils/debug/Debug";
export function useEnvironmentDebug(): void {
useDebugFolder("Dynamic Wind", (folder) => {
@@ -49,13 +51,39 @@ export function useEnvironmentDebug(): void {
});
useDebugFolder("Environment", (folder) => {
const { clouds, graphics, setClouds, setDynamicClouds } =
Debug.getInstance().addFogControl(folder);
const { clouds, fog, graphics, setClouds, setDynamicClouds, setFog } =
useWorldSettingsStore.getState();
const controls = {
...clouds,
...fog,
dynamicClouds: graphics.dynamicClouds,
};
folder
.add(controls, "mode", { Linear: "linear", Exp2: "exp2" })
.name("Fog mode")
.onChange((mode: FogMode) => setFog({ mode }));
folder
.add(controls, "near", FOG_BOUNDS.near.min, FOG_BOUNDS.near.max)
.step(FOG_BOUNDS.near.step)
.name("Fog near")
.onChange((near: number) => setFog({ near }));
folder
.add(controls, "far", FOG_BOUNDS.far.min, FOG_BOUNDS.far.max)
.step(FOG_BOUNDS.far.step)
.name("Fog far")
.onChange((far: number) => setFog({ far }));
folder
.add(controls, "density", FOG_BOUNDS.density.min, FOG_BOUNDS.density.max)
.step(FOG_BOUNDS.density.step)
.name("Fog density")
.onChange((density: number) => setFog({ density }));
folder
.add(controls, "dynamicClouds")
.name("Clouds")
@@ -1,5 +1,4 @@
import { useDebugFolder } from "@/hooks/debug/useDebugFolder";
import { Debug } from "@/utils/debug/Debug";
import {
MAP_PERFORMANCE_GROUP_NAMES,
MAP_PERFORMANCE_MODEL_NAMES,
@@ -16,8 +15,6 @@ function toLabel(value: string): string {
export function useMapPerformanceDebug(): void {
useDebugFolder("Map", (folder) => {
Debug.getInstance().addFogControl(folder);
const {
groups,
models,
+10
View File
@@ -0,0 +1,10 @@
import { useWorldSettingsStore } from "@/managers/stores/useWorldSettingsStore";
import type { FogState } from "@/data/world/fogConfig";
export function useFogSettings(): FogState {
return useWorldSettingsStore((state) => state.fog);
}
export function useSetFogSettings(): (fog: Partial<FogState>) => void {
return useWorldSettingsStore((state) => state.setFog);
}