iso2/scene/ScenePlayerExitBunker.cs
using Sandbox.Utility;

public class ScenePlayerExitBunker : Component {
	[Property] public SkinnedModelRenderer Renderer {get; set;}
	[Property] public bool Play {get; set;}
	[Property, ReadOnly] public bool Playing {get; set;}

	private TimeUntil PlayTime;
	private TimeUntil LoadTime;
	protected override void OnUpdate() {
		Playing = Playing && Play;
		if (!Play) {
			Renderer.Set("play", false);
			Renderer.Enabled = false;
			return;
		}
		if (!Playing) {
			Renderer.Enabled = true;
			foreach (var node in Scene.GetAllComponents<PacViewNode>())
				node.AttachedPlayer = null;
			BasePlayer.Local.GameObject.SetParent(Renderer.GetAttachmentObject("camera"), false);
			BasePlayer.Local.GameObject.LocalRotation = Rotation.FromPitch(90f);
			BasePlayer.Local.PacCamera.FullScreenFMV = true;
			Renderer.Set("play", true);
			Sound.Play("sounds/choreo/player_leave_foley.sound");
			Sound.StopAll(1.22f);
			PlayTime = 1.22f;
			Playing = true;
		}
		BasePlayer.Local.PacCamera.OverlayStrength = 0f;
		BasePlayer.Local.GameObject.LocalRotation = Rotation.Identity;
		BasePlayer.Local.PacCamera.Fade = MathF.Pow(PlayTime.Fraction, 8);
		if (!PlayTime)
			LoadTime = 0.3f;
		if (LoadTime)
			Scene.LoadFromFile("scenes/iso2_world.scene");
		base.OnUpdate();
	}
}