Files
Project-M/Assets/_Project/Scripts/Client/Presentation/WorldAtmosphereConfig.cs
T
kronic 906efe9a6f World: redo environment as off-world natural-frontier Synty biomes (DR-025)
Replace the sci-fi-colony dressing with two cosmetic classic-URP biomes in Game.unity: a lush Meadow_Forest base sanctuary (origin) and a hostile Arid_Desert survey expedition (+1000) - ~380 collider-stripped instances, warpgate/outpost landmarks, cyan/orange Aether accent lights. Warm daylight sun + Trilight ambient + a procedural daytime skybox + a cloned daylight post-FX grade (ACES kept). New client-only WorldAtmosphereSystem(+Config) cross-fades per-region fog/ambient by camera X>500 (mirrors HudSystem). Cosmetic-only - colliders stripped, never the subscene - so zero sim/netcode/PhysicsWorld impact (adversarially verified). Shadow-casting disabled on small foliage. EditMode 214/214. See DR-025.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 20:20:58 -07:00

39 lines
1.9 KiB
C#

using UnityEngine;
namespace ProjectM.Client
{
/// <summary>
/// Live-tunable knobs for <see cref="WorldAtmosphereSystem"/> — the per-region fog/ambient cross-fade
/// between the lush cyan-ordered meadow base (origin) and the hostile orange-wild arid expedition (+1000 X).
/// Mirrors the <c>WorldFeelConfig</c>/<c>VFXConfig</c> bridge idiom: a MonoBehaviour placed in the gameplay
/// scene with a static <see cref="Instance"/> the client presentation system reads (falling back to these
/// same defaults when absent). Pure presentation — never touches the simulation. Colours are sRGB.
/// </summary>
public sealed class WorldAtmosphereConfig : MonoBehaviour
{
public static WorldAtmosphereConfig Instance;
[Header("Region boundary (camera world-space X)")]
[Tooltip("Camera X past this reads as the +1000 expedition region (matches HudSystem's ExpeditionRegionXMin).")]
public float BoundaryX = 500f;
[Tooltip("Half-width of the smooth transition band around BoundaryX, in world units.")]
public float BlendHalfWidth = 80f;
[Header("Base (meadow) atmosphere")]
public Color BaseFogColor = new Color(0.784f, 0.878f, 0.824f, 1f); // #C8E0D2
public float BaseFogDensity = 0.006f;
public Color BaseAmbientSky = new Color(0.725f, 0.831f, 0.949f, 1f); // #B9D4F2
[Header("Expedition (arid desert) atmosphere")]
public Color ExpeditionFogColor = new Color(0.851f, 0.549f, 0.227f, 1f); // #D98C3A
public float ExpeditionFogDensity = 0.010f;
public Color ExpeditionAmbientSky = new Color(0.910f, 0.769f, 0.604f, 1f); // #E8C49A
void OnEnable() { Instance = this; }
void OnDisable() { if (Instance == this) Instance = null; }
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void ResetStatics() { Instance = null; }
}
}