using UnityEngine; namespace ProjectM.Client { /// /// Live-tunable knobs for — 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 WorldFeelConfig/VFXConfig bridge idiom: a MonoBehaviour placed in the gameplay /// scene with a static the client presentation system reads (falling back to these /// same defaults when absent). Pure presentation — never touches the simulation. Colours are sRGB. /// 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; } } }