Example #1
0
 private void RegisterEntity(Entity Entity)
 {
     if (!EntitiesTracked.Add(Entity))
     {
         return;
     }
     foreach (var Component in Entity.Components)
     {
         var ComponentType = Component.GetType();
         foreach (var Filter in GetFiltersForType(ComponentType))
         {
             Filter.Components.Add(Component);
         }
     }
     Entity.Components.ComponentAdded   += Components_ComponentAdded;
     Entity.Components.ComponentRemoved += Components_ComponentRemoved;
 }
Example #2
0
 private void UnregisterEntity(Entity Entity)
 {
     if (!EntitiesTracked.Contains(Entity))
     {
         return;
     }
     foreach (var Component in Entity.Components)
     {
         var ComponentType = Component.GetType();
         foreach (var Filter in GetFiltersForType(ComponentType))
         {
             bool Result = Filter.Components.Remove(Component);
             if (!Result)
             {
                 throw new KeyNotFoundException();
             }
         }
     }
     EntitiesTracked.Remove(Entity);
     Entity.Components.ComponentAdded   -= Components_ComponentAdded;
     Entity.Components.ComponentRemoved -= Components_ComponentRemoved;
 }