namespace SepCore.Simulation { internal sealed class ProjectileStore : EntityComponentStore { private Column _identity; private Column _transform; private Column _velocity; private Column _life; public Column Identity => _identity; public Column Transform => _transform; public Column Velocity => _velocity; public Column Life => _life; public void Initialize(int capacity) { if (IsCreated) { return; } Dispose(); _identity = Register(capacity); _transform = Register(capacity); _velocity = Register(capacity); _life = Register(capacity); MarkInitialized(); } public int Add(in ProjectileIdentitySim identity, in ProjectileTransformSim transform, in ProjectileVelocitySim velocity, in ProjectileLifeSim life) { int index = AppendRow(identity.EntityId); _identity.Data.Add(identity); _transform.Data.Add(transform); _velocity.Data.Add(velocity); _life.Data.Add(life); return index; } public override void Dispose() { base.Dispose(); _identity = null; _transform = null; _velocity = null; _life = null; } } }