Files
Project-M/Assets/_Project/Scripts/Authoring/Combat/UpgradePickupSpawnerAuthoring.cs
T
2026-05-31 21:35:12 -07:00

49 lines
1.9 KiB
C#

using ProjectM.Simulation;
using Unity.Entities;
using UnityEngine;
namespace ProjectM.Authoring
{
/// <summary>
/// Authoring for the baked <see cref="UpgradePickupSpawner"/> singleton (mirrors
/// TrainingDummySpawnerAuthoring). Place on a single GameObject in the gameplay subscene; the
/// server-only <c>UpgradePickupSpawnSystem</c> reads it, spawns <see cref="Count"/> pickups along +X
/// from <see cref="Origin"/> at <see cref="Spacing"/> intervals, then destroys the singleton so it
/// fires exactly once. The entity carries no transform; only the prefab needs a runtime transform.
/// </summary>
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<UpgradePickupSpawnerAuthoring>
{
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,
});
}
}
}
}