namespace SepCore.Simulation { internal sealed class EnemyStore : EntityComponentStore { private Column _identity; private Column _transform; private Column _moveInput; private Column _moveConfig; private Column _attack; private Column _behavior; private Column _separation; public Column Identity => _identity; public Column Transform => _transform; public Column MoveInput => _moveInput; public Column MoveConfig => _moveConfig; public Column Attack => _attack; public Column Behavior => _behavior; public Column Separation => _separation; public void Initialize(int capacity) { if (IsCreated) { return; } Dispose(); _identity = Register(capacity); _transform = Register(capacity); _moveInput = Register(capacity); _moveConfig = Register(capacity); _attack = Register(capacity); _behavior = Register(capacity); _separation = Register(capacity); MarkInitialized(); } public int Add(in EnemyIdentitySim identity, in EnemyTransformSim transform, in EnemyMoveInputSim moveInput, in EnemyMoveConfigSim moveConfig, in EnemyAttackSim attack, in EnemyBehaviorSim behavior) { int index = AppendRow(identity.EntityId); _identity.Data.Add(identity); _transform.Data.Add(transform); _moveInput.Data.Add(moveInput); _moveConfig.Data.Add(moveConfig); _attack.Data.Add(attack); _behavior.Data.Add(behavior); _separation.Data.Add(default); return index; } public override void Dispose() { base.Dispose(); _identity = null; _transform = null; _moveInput = null; _moveConfig = null; _attack = null; _behavior = null; _separation = null; } } }