2 using System.Collections.Generic;
8 readonly Dictionary<TKey, HashSet<TEntity>> _index;
11 _index =
new Dictionary<TKey, HashSet<TEntity>>();
16 _index =
new Dictionary<TKey, HashSet<TEntity>>();
20 public EntityIndex(
string name,
IGroup<TEntity> group, Func<TEntity, IComponent, TKey> getKey, IEqualityComparer<TKey> comparer) : base(name, group, getKey) {
21 _index =
new Dictionary<TKey, HashSet<TEntity>>(comparer);
26 _index =
new Dictionary<TKey, HashSet<TEntity>>(comparer);
30 public override void Activate() {
32 indexEntities(_group);
35 public HashSet<TEntity> GetEntities(TKey key) {
36 HashSet<TEntity> entities;
37 if(!_index.TryGetValue(key, out entities)) {
39 _index.Add(key, entities);
45 public override string ToString() {
46 return "EntityIndex(" + name +
")";
49 protected override void clear() {
50 foreach(var entities
in _index.Values) {
51 foreach(var entity
in entities) {
53 #if ENTITAS_FAST_AND_UNSAFE 56 if(entity.owners.Contains(
this)) {
66 protected override void addEntity(TKey key, TEntity entity) {
67 GetEntities(key).Add(entity);
69 #if ENTITAS_FAST_AND_UNSAFE 72 if(!entity.owners.Contains(
this)) {
78 protected override void removeEntity(TKey key, TEntity entity) {
79 GetEntities(key).Remove(entity);
81 #if ENTITAS_FAST_AND_UNSAFE 84 if(entity.owners.Contains(
this)) {