Grid/DarkProfile.cs
using Sandbox;
using static Sandbox.Tonemapping;
namespace SWB.Visuals.Profiles;
public sealed class DarkProfile : CinematicProfile
{
// ─────────────────────────────
// TONEMAPPING
// ─────────────────────────────
public override TonemappingMode Tonemap => TonemappingMode.ACES;
// Tumma yö, lukittu exposure
public override float MinExposure => -1.25f;
public override float MaxExposure => -1.25f;
// ─────────────────────────────
// BLOOM
// ─────────────────────────────
// Arkhamissa bloom on hyvin hillitty → pois päältä
public override bool EnableBloom => false;
public override float BloomThreshold => 1.2f;
// ─────────────────────────────
// COLOR ADJUSTMENTS
// ─────────────────────────────
// Neo-noir: tumma, kontrastinen, desaturoitu
public override float Brightness => -0.15f;
public override float Contrast => 1.3f;
public override float Saturation => 0.65f;
// ─────────────────────────────
// LIGHTING
// ─────────────────────────────
protected override void ApplyLighting()
{
var cam = Scene.Camera;
if (cam == null)
return;
// ───────── KEY LIGHT – KUU / KAUPUNKIVALOT ─────────
var keyGO = GetOrCreateLight("Arkham_KeyLight");
var key = keyGO.Components.GetOrCreate<DirectionalLight>();
// Kylmä sinertävä kuuvalo
key.LightColor = new Color(0.55f, 0.75f, 1.0f);
key.Shadows = true;
// Sivulta ja ylhäältä → voimakkaat siluetit
keyGO.Transform.Rotation =
Rotation.LookAt(new Vector3(-1.0f, 0.2f, -1.2f));
// ───────── FILL LIGHT – KAUPUNGIN AMBIENT ─────────
var fillGO = GetOrCreateLight("Arkham_AmbientFill");
var fill = fillGO.Components.GetOrCreate<PointLight>();
// Vihertävän-sininen heijastus (betoni, märät pinnat)
fill.LightColor = new Color(0.15f, 0.25f, 0.35f);
fill.Radius = 4500f;
fill.Shadows = false;
fillGO.Transform.Position =
cam.Transform.Position +
cam.Transform.Rotation.Up * 600f;
// ───────── RIM LIGHT – BATMAN-SILUETTI ─────────
var rimGO = GetOrCreateLight("Arkham_RimLight");
var rim = rimGO.Components.GetOrCreate<DirectionalLight>();
// Kylmä vastavalo, korostaa muotoja
rim.LightColor = new Color(0.4f, 0.55f, 0.8f);
rim.Shadows = false;
rimGO.Transform.Rotation =
Rotation.LookAt(new Vector3(1.0f, -0.1f, -0.6f));
}
}