ExampleComponents/MapLoadedHandler.cs
using Sandbox;
public sealed class MapLoadedHandler : Component
{
[Property] public MapInstance MapInstance { get; set; }
[Property] public GameObject PlayerObject { get; set; }
protected override void OnAwake()
{
base.OnAwake();
}
protected override void OnEnabled()
{
if ( MapInstance.IsValid() )
{
MapInstance.OnMapLoaded = OnMapLoaded;
if ( MapInstance.IsLoaded )
{
OnMapLoaded();
}
}
}
protected override void OnDisabled()
{
if ( MapInstance.IsValid() )
{
MapInstance.OnMapLoaded -= OnMapLoaded;
}
}
void OnMapLoaded()
{
Log.Info( "Map has been loaded!" );
var spawnPoints = Scene.Directory.FindByName( "info_player_start" ).ToArray();
var randomSpawn = Random.Shared.FromArray( spawnPoints );
if ( randomSpawn.IsValid() )
{
PlayerObject.WorldPosition = randomSpawn.WorldPosition + Vector3.Up * 64;
PlayerObject.WorldRotation = randomSpawn.WorldRotation;
}
}
}