diff --git a/encompass-cs/ComponentManager.cs b/encompass-cs/ComponentManager.cs index a7a7cd4..5609424 100644 --- a/encompass-cs/ComponentManager.cs +++ b/encompass-cs/ComponentManager.cs @@ -12,7 +12,7 @@ namespace Encompass private readonly Dictionary componentIDToType = new Dictionary(); private readonly Dictionary IDToComponent = new Dictionary(); - private readonly Dictionary> entityIDToComponentIDs = new Dictionary>(); + private readonly Dictionary> entityIDToComponentIDs = new Dictionary>(); private readonly Dictionary componentIDToEntityID = new Dictionary(); private readonly Dictionary>> entityIDToComponentTypeToComponentIDs = new Dictionary>>(); @@ -30,7 +30,7 @@ namespace Encompass internal void RegisterEntity(Guid entityID) { - entityIDToComponentIDs.Add(entityID, new HashSet()); + entityIDToComponentIDs.Add(entityID, new PooledSet()); entityIDToComponentTypeToComponentIDs.Add(entityID, new PooledDictionary>()); } @@ -72,8 +72,7 @@ namespace Encompass internal IEnumerable GetComponentIDsByEntityID(Guid entityID) { - HashSet idSet; - if (entityIDToComponentIDs.TryGetValue(entityID, out idSet)) + if (entityIDToComponentIDs.TryGetValue(entityID, out PooledSet idSet)) { return idSet; } @@ -82,8 +81,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> GetComponentsByType() where TComponent : struct, IComponent { - HashSet idSet; - if (typeToComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (typeToComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)IDToComponent[id])); } @@ -92,8 +90,7 @@ namespace Encompass internal IEnumerable> GetComponentsByEntityAndType(Guid entityID) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out idSet)) + if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Select(id => (id, (TComponent)IDToComponent[id])); } @@ -102,8 +99,7 @@ namespace Encompass internal bool EntityHasComponentOfType(Guid entityID) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out idSet)) + if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Count > 0; } @@ -113,8 +109,7 @@ namespace Encompass internal bool ComponentOfTypeExists() where TComponent : struct, IComponent { - HashSet idSet; - if (typeToComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (typeToComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; } @@ -200,6 +195,7 @@ namespace Encompass public void RegisterDestroyedEntity(Guid entityID) { + entityIDToComponentIDs[entityID].Dispose(); entityIDToComponentIDs.Remove(entityID); foreach (var set in entityIDToComponentTypeToComponentIDs[entityID].Values) diff --git a/encompass-cs/ComponentMessageManager.cs b/encompass-cs/ComponentMessageManager.cs index 106ed60..8efc0bd 100644 --- a/encompass-cs/ComponentMessageManager.cs +++ b/encompass-cs/ComponentMessageManager.cs @@ -152,8 +152,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadExistingAndPendingComponentsByType() where TComponent : struct, IComponent { - HashSet idSet; - if (componentMessageTypeToComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (componentMessageTypeToComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -163,8 +162,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadExistingComponentsByType() where TComponent: struct, IComponent { - HashSet idSet; - if (componentMessageTypeToExistingComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (componentMessageTypeToExistingComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -174,8 +172,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadPendingComponentsByType() where TComponent : struct, IComponent { - HashSet idSet; - if (componentMessageTypeToPendingComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (componentMessageTypeToPendingComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -204,8 +201,7 @@ namespace Encompass internal bool SomeExistingOrPendingComponent() where TComponent : struct, IComponent { - HashSet idSet; - if (componentMessageTypeToComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (componentMessageTypeToComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; } @@ -215,8 +211,7 @@ namespace Encompass internal bool SomeExistingComponent() where TComponent : struct, IComponent { - HashSet idSet; - if (componentMessageTypeToExistingComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (componentMessageTypeToExistingComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; } @@ -226,8 +221,7 @@ namespace Encompass internal bool SomePendingComponent() where TComponent : struct, IComponent { - HashSet idSet; - if (componentMessageTypeToPendingComponentIDs.TryGetValue(typeof(TComponent), out idSet)) + if (componentMessageTypeToPendingComponentIDs.TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; } @@ -239,8 +233,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadExistingAndPendingComponentsByEntityAndType(Entity entity) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityToTypeToComponentIDs.ContainsKey(entity) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out idSet)) + if (entityToTypeToComponentIDs.ContainsKey(entity) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -250,8 +243,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadExistingComponentsByEntityAndType(Entity entity) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityToTypeToExistingComponentIDs.ContainsKey(entity) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out idSet)) + if (entityToTypeToExistingComponentIDs.ContainsKey(entity) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -261,8 +253,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadPendingComponentsByEntityAndType(Entity entity) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityToTypeToPendingComponentIDs.ContainsKey(entity) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out idSet)) + if (entityToTypeToPendingComponentIDs.ContainsKey(entity) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -291,8 +282,7 @@ namespace Encompass internal bool HasExistingOrPendingComponent(Entity entity) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityToTypeToComponentIDs.TryGetValue(entity, out _) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out idSet)) + if (entityToTypeToComponentIDs.TryGetValue(entity, out _) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Count > 0; } @@ -302,8 +292,7 @@ namespace Encompass internal bool HasExistingComponent(Entity entity) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityToTypeToExistingComponentIDs.TryGetValue(entity, out _) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out idSet)) + if (entityToTypeToExistingComponentIDs.TryGetValue(entity, out _) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Count > 0; } @@ -313,8 +302,7 @@ namespace Encompass internal bool HasPendingComponent(Entity entity) where TComponent : struct, IComponent { - PooledSet idSet; - if (entityToTypeToPendingComponentIDs.TryGetValue(entity, out _) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out idSet)) + if (entityToTypeToPendingComponentIDs.TryGetValue(entity, out _) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) { return idSet.Count > 0; } diff --git a/encompass-cs/RenderManager.cs b/encompass-cs/RenderManager.cs index 179e6e8..12f2a58 100644 --- a/encompass-cs/RenderManager.cs +++ b/encompass-cs/RenderManager.cs @@ -6,19 +6,16 @@ namespace Encompass { internal class RenderManager { - private readonly EntityManager entityManager; private readonly ComponentManager componentManager; private readonly DrawLayerManager drawLayerManager; private readonly Dictionary> drawComponentTypeToOrderedRenderer = new Dictionary>(); public RenderManager( - EntityManager entityManager, ComponentManager componentManager, DrawLayerManager drawLayerManager ) { - this.entityManager = entityManager; this.componentManager = componentManager; this.drawLayerManager = drawLayerManager; } diff --git a/encompass-cs/WorldBuilder.cs b/encompass-cs/WorldBuilder.cs index 678ae0a..a44b323 100644 --- a/encompass-cs/WorldBuilder.cs +++ b/encompass-cs/WorldBuilder.cs @@ -32,7 +32,7 @@ namespace Encompass messageManager = new MessageManager(); componentMessageManager = new ComponentMessageManager(); entityManager = new EntityManager(componentManager, componentMessageManager); - renderManager = new RenderManager(entityManager, componentManager, drawLayerManager); + renderManager = new RenderManager(componentManager, drawLayerManager); } public Entity CreateEntity()