7 public string name {
get {
return _name; } }
9 protected readonly
string _name;
11 protected readonly Func<TEntity, IComponent, TKey> _getKey;
12 protected readonly Func<TEntity, IComponent, TKey[]> _getKeys;
13 protected readonly
bool _isSingleKey;
29 public virtual void Activate() {
30 _group.OnEntityAdded += onEntityAdded;
31 _group.OnEntityRemoved += onEntityRemoved;
34 public virtual void Deactivate() {
35 _group.OnEntityAdded -= onEntityAdded;
36 _group.OnEntityRemoved -= onEntityRemoved;
40 public override string ToString() {
45 var entities = group.GetEntities();
46 for(
int i = 0; i < entities.Length; i++) {
47 var entity = entities[i];
49 addEntity(_getKey(entity, null), entity);
51 var keys = _getKeys(entity, null);
52 for(
int j = 0; j < keys.Length; j++) {
53 addEntity(keys[j], entity);
61 addEntity(_getKey(entity, component), entity);
63 var keys = _getKeys(entity, component);
64 for(
int i = 0; i < keys.Length; i++) {
65 addEntity(keys[i], entity);
72 removeEntity(_getKey(entity, component), entity);
74 var keys = _getKeys(entity, component);
75 for(
int i = 0; i < keys.Length; i++) {
76 removeEntity(keys[i], entity);
81 protected abstract void addEntity(TKey key, TEntity entity);
83 protected abstract void removeEntity(TKey key, TEntity entity);
85 protected abstract void clear();