iso2/scene/PlayerDeath.cs
public class PlayerDeath : Component {
	[Property] public SurfaceMusicManager Music {get; set;}
	[Property] public PacViewNode Grave {get; set;}
	[Property] public GameObject Skeleton {get; set;}
	[Property] public bool IsDead {get; set;}
	[Button] public void Dead() {
		if (IsDead)
			return;
		IsDead = true;
		Music.PlayingTrack = SurfaceMusicManager.Track.None;
		BasePlayer.Local.IsoEntity.Components.Get<NpcAnimator>().Activity = "die";
		Switch = () => {
			Skeleton.Enabled = true;
			BasePlayer.Local.IsoEntity.Components.Get<NpcMovement>().Path.Clear();
			BasePlayer.Local.Isometric = false;
			Sound.Play("sounds/vo/death.sound");
			Grave.ConnectToNode();
		};
		FadeOut = 4f;
		Switching = true;
	}
	private bool Switching;
	private Action Switch;
	private TimeUntil FadeOut;
	private TimeUntil FadeIn;
	protected override void OnUpdate() {
		if (!Switching)
			return;
		BasePlayer.Local.IsoCamera.Fade = -(2 - FadeIn.Relative.Clamp(0,2))*0.5f;
		BasePlayer.Local.PacCamera.Fade = -(2 - FadeIn.Relative.Clamp(0,2))*0.5f;
		if (!FadeOut) {
			FadeIn = 14f;
			return;
		}
		Switch?.Invoke();
		Switch = null;
		BasePlayer.Local.IsoCamera.Fade = -1 + FadeIn.Passed.Clamp(0,1) - (1 - FadeIn.Relative.Clamp(0,1));
		BasePlayer.Local.PacCamera.Fade = -1 + FadeIn.Passed.Clamp(0,1) - (1 - FadeIn.Relative.Clamp(0,1));
		if (!FadeIn)
			return;
		Scene.LoadFromFile("scenes/iso2_world.scene");
		base.OnUpdate();
	}
}