Park/Events/EventEffects/ColdEvent.cs
using HC3;
public class ColdEvent : BaseEvent
{
[Property] GameObject RainObject { get; set; } = null;
ColorGrading ColorGrading { get; set; }
Vignette Vignette { get; set; }
GameObject CameraObject { get; set; }
private IEnumerable<Guest> AllGuests => GuestManager.Instance.GuestList;
protected override void OnStart()
{
base.OnStart();
ColorGrading = Scene.Camera.AddComponent<ColorGrading>();
ColorGrading.GradingMethod = ColorGrading.GradingType.TemperatureControl;
Vignette = Scene.Camera.AddComponent<Vignette>();
Vignette.Color = "#167173";
Vignette.Intensity = 0.2f;
}
protected override void OnUpdate()
{
base.OnUpdate();
if ( !ColorGrading.IsValid() ) return;
ColorGrading.ColorTempK = MathX.Lerp( ColorGrading.ColorTempK, 40000, Time.Delta * 0.5f );
// Don't update guests happiness if we aren't the host.
if ( !Networking.IsHost )
return;
if ( AllGuests == null ) return;
foreach ( var guest in AllGuests )
{
if ( guest.IsValid() )
{
guest.Needs.Happiness -= Time.Delta * 0.002f;
}
}
}
protected override void OnDestroy()
{
Vignette?.Destroy();
ColorGrading?.Destroy();
}
}