Grid/WinterOutdoorProfile.cs
using Sandbox;
using static Sandbox.Tonemapping;

namespace SWB.Visuals.Profiles;

public sealed class WinterOutdoorProfile : CinematicProfile
{
    // ─────────────────────────────
    // TONEMAPPING
    // ─────────────────────────────

    public override TonemappingMode Tonemap => TonemappingMode.ACES;

    // Lukittu exposure – tärkein talvessa
    public override float MinExposure => -0.35f;
    public override float MaxExposure => -0.35f;

    // ─────────────────────────────
    // BLOOM
    // ─────────────────────────────

    public override bool EnableBloom => false;
    public override float BloomThreshold => 1.0f;

    // ─────────────────────────────
    // COLOR ADJUSTMENTS
    // ─────────────────────────────

    public override float Brightness => -0.05f;
    public override float Contrast => 1.1f;
    public override float Saturation => 0.7f;

    // ─────────────────────────────
    // LIGHTING
    // ─────────────────────────────

    protected override void ApplyLighting()
    {
        var cam = Scene.Camera;
        if (cam == null)
            return;

        // ───────── KEY LIGHT – KEVYT TALVIAURINKO ─────────
        var sunGO = GetOrCreateLight("Winter_SunLight");
        var sun = sunGO.Components.GetOrCreate<DirectionalLight>();

        // Kevyt, hieman lämmin mutta hillitty
        sun.LightColor = new Color(1.0f, 0.97f, 0.9f);
        sun.Shadows = true;

        // Matala aurinko (talvi)
        sunGO.Transform.Rotation =
            Rotation.LookAt(new Vector3(-1.0f, -0.3f, -0.6f));

        // ───────── FILL LIGHT – TAIVAS + LUMI ─────────
        var fillGO = GetOrCreateLight("Winter_SkyFill");
        var fill = fillGO.Components.GetOrCreate<PointLight>();

        fill.LightColor = new Color(0.55f, 0.65f, 0.75f);
        fill.Radius = 3500f;
        fill.Shadows = false;

        fillGO.Transform.Position =
            cam.Transform.Position +
            cam.Transform.Rotation.Up * 500f;

        // ───────── RIM LIGHT – MUOTOA HAHMOILLE (HALPA) ─────────
        var rimGO = GetOrCreateLight("Winter_RimLight");
        var rim = rimGO.Components.GetOrCreate<DirectionalLight>();

        rim.LightColor = new Color(0.6f, 0.7f, 0.85f);
        rim.Shadows = false;

        rimGO.Transform.Rotation =
            Rotation.LookAt(new Vector3(1.0f, 0.2f, -0.5f));
    }
}