using ProjectM.Simulation; using Unity.Entities; using UnityEngine; namespace ProjectM.Authoring { /// /// Authoring placed once in the gameplay subscene. Bakes a singleton /// holding the player ghost prefab entity and a spawn point, which the server's /// GoInGameServerSystem instantiates on each connect. /// 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 { 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 }); } } } }