32 lines
1.3 KiB
C#
32 lines
1.3 KiB
C#
using Unity.Entities;
|
|
|
|
namespace ProjectM.Simulation
|
|
{
|
|
/// <summary>
|
|
/// Baked singleton holding the resource-node ghost prefab + field shape. ExpeditionFieldSystem reads it to
|
|
/// scatter <see cref="Count"/> nodes within <see cref="Radius"/> of the expedition region origin on each
|
|
/// Expedition phase entry (seeded by the cycle number). Mirrors <see cref="StorageSpawner"/>.
|
|
/// </summary>
|
|
public struct ResourceFieldSpawner : IComponentData
|
|
{
|
|
/// <summary>Baked resource-node ghost prefab to instantiate.</summary>
|
|
public Entity Prefab;
|
|
|
|
/// <summary>Number of nodes to scatter per expedition.</summary>
|
|
public int Count;
|
|
|
|
/// <summary>Scatter radius (world units) around the expedition region origin.</summary>
|
|
public float Radius;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Server-only bookkeeping for <see cref="ProjectM.Server.RoomFieldSystem"/>, attached at runtime beside the
|
|
/// baked spawner singleton (the BaseFieldRuntime idiom): the <c>RunRuntime.RoomEpoch</c> this system last seeded,
|
|
/// int-equality-compared so each room's field scatters exactly once. NOT replicated; session-scoped.
|
|
/// </summary>
|
|
public struct RoomFieldState : IComponentData
|
|
{
|
|
public int LastSpawnedRoomEpoch;
|
|
}
|
|
}
|