using ProjectM.Simulation; using Unity.Entities; using UnityEngine; namespace ProjectM.Authoring { /// /// Authoring for the baked singleton (mirrors /// TrainingDummySpawnerAuthoring). Place on a single GameObject in the gameplay subscene; the /// server-only UpgradePickupSpawnSystem reads it, spawns pickups along +X /// from at intervals, then destroys the singleton so it /// fires exactly once. The entity carries no transform; only the prefab needs a runtime transform. /// public class UpgradePickupSpawnerAuthoring : MonoBehaviour { [Tooltip("Upgrade pickup prefab to instantiate. Must carry UpgradePickupAuthoring.")] public GameObject PickupPrefab; [Min(0)] [Tooltip("How many pickups to spawn.")] public int Count = 2; [Min(0f)] [Tooltip("World-unit spacing between consecutive pickups along +X.")] public float Spacing = 3f; [Tooltip("World-space position of the first pickup.")] public Vector3 Origin = new Vector3(-4f, 0f, 6f); private class UpgradePickupSpawnerBaker : Baker { public override void Bake(UpgradePickupSpawnerAuthoring authoring) { var entity = GetEntity(authoring, TransformUsageFlags.None); AddComponent(entity, new UpgradePickupSpawner { Prefab = authoring.PickupPrefab != null ? GetEntity(authoring.PickupPrefab, TransformUsageFlags.Dynamic) : Entity.Null, Count = authoring.Count, Spacing = authoring.Spacing, Origin = authoring.Origin, }); } } } }