Files
Project-M/Assets/_Project/Scripts/Authoring/Spawning/PlayerSpawnerAuthoring.cs
T
2026-05-31 14:27:52 -07:00

35 lines
1.2 KiB
C#

using ProjectM.Simulation;
using Unity.Entities;
using UnityEngine;
namespace ProjectM.Authoring
{
/// <summary>
/// Authoring placed once in the gameplay subscene. Bakes a <see cref="PlayerSpawner"/> singleton
/// holding the player ghost prefab entity and a spawn point, which the server's
/// GoInGameServerSystem instantiates on each connect.
/// </summary>
public class PlayerSpawnerAuthoring : MonoBehaviour
{
[Tooltip("The Player ghost prefab to spawn for each connected client.")]
public GameObject PlayerPrefab;
public Vector3 SpawnPoint = Vector3.zero;
private class PlayerSpawnerBaker : Baker<PlayerSpawnerAuthoring>
{
public override void Bake(PlayerSpawnerAuthoring authoring)
{
// The spawner itself needs no transform; it is a data singleton.
var entity = GetEntity(authoring, TransformUsageFlags.None);
AddComponent(entity, new PlayerSpawner
{
PlayerPrefab = GetEntity(authoring.PlayerPrefab, TransformUsageFlags.Dynamic),
SpawnPoint = authoring.SpawnPoint
});
}
}
}
}