51 lines
1.6 KiB
C#
51 lines
1.6 KiB
C#
namespace SepCore.Simulation
|
|
{
|
|
internal sealed class PickupStore : EntityComponentStore
|
|
{
|
|
private Column<PickupIdentitySim> _identity;
|
|
private Column<PickupTransformSim> _transform;
|
|
private Column<PickupRadiusSim> _radius;
|
|
private Column<PickupStateSim> _state;
|
|
|
|
public Column<PickupIdentitySim> Identity => _identity;
|
|
public Column<PickupTransformSim> Transform => _transform;
|
|
public Column<PickupRadiusSim> Radius => _radius;
|
|
public Column<PickupStateSim> State => _state;
|
|
|
|
public void Initialize(int capacity)
|
|
{
|
|
if (IsCreated)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Dispose();
|
|
_identity = Register<PickupIdentitySim>(capacity);
|
|
_transform = Register<PickupTransformSim>(capacity);
|
|
_radius = Register<PickupRadiusSim>(capacity);
|
|
_state = Register<PickupStateSim>(capacity);
|
|
MarkInitialized();
|
|
}
|
|
|
|
public int Add(in PickupIdentitySim identity, in PickupTransformSim transform, in PickupRadiusSim radius,
|
|
in PickupStateSim state = default)
|
|
{
|
|
int index = AppendRow(identity.EntityId);
|
|
_identity.Data.Add(identity);
|
|
_transform.Data.Add(transform);
|
|
_radius.Data.Add(radius);
|
|
_state.Data.Add(state);
|
|
return index;
|
|
}
|
|
|
|
public override void Dispose()
|
|
{
|
|
base.Dispose();
|
|
_identity = null;
|
|
_transform = null;
|
|
_radius = null;
|
|
_state = null;
|
|
}
|
|
}
|
|
}
|