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

namespace SWB.Visuals;

/// <summary>
/// Elokuvamainen post processing -kokonaisuus kameralle.
/// Lisätään Camera.GameObjectiin runtime-vaiheessa.
/// </summary>
public sealed class CinematicPostProcess : Component
{
    [Property] public bool UseACES { get; set; } = true;

    [Property] public float BloomThreshold { get; set; } = 0.6f;

    [Property] public bool EnableBloom { get; set; } = true;

    protected override void OnStart()
    {
        Apply();
    }

    public void Apply()
    {
        // 🎬 Tonemapping – AINOA varma “grading”
        var tonemap = Components.GetOrCreate<Tonemapping>();
        tonemap.Enabled = true;
        tonemap.Mode = UseACES
            ? TonemappingMode.ACES
            : TonemappingMode.Linear;

        // ✨ Bloom – vain jos maailmassa on kirkkaita kohtia
        var bloom = Components.GetOrCreate<Bloom>();
        bloom.Enabled = EnableBloom;
        bloom.Threshold = BloomThreshold;
    }
}