ExampleComponents/GameNetworkManager.cs
namespace Sandbox;
public sealed class GameNetworkManager : Component, Component.INetworkListener
{
[Property] public GameObject PlayerPrefab { get; set; }
[Property] public GameObject SpawnPoint { get; set; }
public void OnActive( Connection channel )
{
var clothing = new ClothingContainer();
clothing.Deserialize( channel.GetUserData( "avatar" ) );
var player = PlayerPrefab.Clone( SpawnPoint.WorldTransform );
var nameTag = player.Components.Get<NameTagPanel>( FindMode.EverythingInSelfAndDescendants );
if ( nameTag.IsValid() )
{
nameTag.Name = channel.DisplayName;
}
// Assume that if they have a skinned model renderer, it's the citizen's body
if ( player.Components.TryGet<SkinnedModelRenderer>( out var body, FindMode.EverythingInSelfAndDescendants ) )
{
clothing.Apply( body );
}
player.NetworkSpawn( channel );
}
}