using MoonTools.ECS.Collections; namespace MoonTools.ECS; internal class IdAssigner { uint Next; NativeArray AvailableIds = new NativeArray(); public uint Assign() { if (!AvailableIds.TryPop(out var id)) { id = Next; Next += 1; } return id; } public void Unassign(uint id) { AvailableIds.Append(id); } public void CopyTo(IdAssigner other) { AvailableIds.CopyTo(other.AvailableIds); other.Next = Next; } }