Files
megakoop/Game/Scripts/Runtime/Data/SpawnerConfig.cs
2025-10-26 14:17:31 +01:00

45 lines
1.3 KiB
C#

using UnityEngine;
namespace Game.Scripts.Runtime.Data
{
[CreateAssetMenu(menuName = "Game/Spawning/Spawner Config", fileName = "SpawnerConfig")]
public class SpawnerConfig : ScriptableObject
{
[Header("Radii")]
public float MinSpawnRadius = 8f;
public float MaxSpawnRadius = 24f;
[Header("Timing")]
public float SpawnInterval = 2f;
public AnimationCurve SpawnRateOverTime = AnimationCurve.Linear(0f, 1f, 1f, 1f);
[Header("Limits")]
public int MaxConcurrent = 30;
public int MaxPlacementAttempts = 6;
public int PrewarmPerType = 4;
public int PoolHardCapPerType = 60;
[Header("Placement")]
public float GroundRaycastHeight = 5f;
public float MaxHeightDelta = 4f;
public bool UseLineOfSight = false;
[Header("Layers")]
public LayerMask GroundMask = Physics.DefaultRaycastLayers;
public LayerMask ObstacleMask = Physics.DefaultRaycastLayers;
[Header("NavMesh")]
public int NavMeshAreaMask = -1;
[Header("RNG")]
[SerializeField] private bool useSeed;
[SerializeField] private int seedValue = 0;
[Header("Debug")]
public bool DrawGizmos = false;
public int GizmoSampleCount = 16;
public int? Seed => useSeed ? seedValue : (int?)null;
}
}