From 583776dd53bda48a05410e6645e61ad6995b3a72 Mon Sep 17 00:00:00 2001 From: Evan Hemsley <2342303+ehemsley@users.noreply.github.com> Date: Fri, 9 Aug 2019 20:04:11 -0700 Subject: [PATCH] remove nested pooled collections --- encompass-cs/ComponentManager.cs | 12 ++++----- encompass-cs/ComponentMessageManager.cs | 36 ++++++++++++------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/encompass-cs/ComponentManager.cs b/encompass-cs/ComponentManager.cs index 5609424..4ab7580 100644 --- a/encompass-cs/ComponentManager.cs +++ b/encompass-cs/ComponentManager.cs @@ -15,7 +15,7 @@ namespace Encompass private readonly Dictionary> entityIDToComponentIDs = new Dictionary>(); private readonly Dictionary componentIDToEntityID = new Dictionary(); - private readonly Dictionary>> entityIDToComponentTypeToComponentIDs = new Dictionary>>(); + private readonly Dictionary>> entityIDToComponentTypeToComponentIDs = new Dictionary>>(); private readonly Dictionary> typeToComponentIDs = new Dictionary>(); @@ -31,7 +31,7 @@ namespace Encompass internal void RegisterEntity(Guid entityID) { entityIDToComponentIDs.Add(entityID, new PooledSet()); - entityIDToComponentTypeToComponentIDs.Add(entityID, new PooledDictionary>()); + entityIDToComponentTypeToComponentIDs.Add(entityID, new PooledDictionary>(ClearMode.Never)); } internal Guid NextID() @@ -53,7 +53,7 @@ namespace Encompass entityIDToComponentIDs[entity.ID].Add(componentID); if (!entityIDToComponentTypeToComponentIDs[entity.ID].ContainsKey(typeof(TComponent))) { - entityIDToComponentTypeToComponentIDs[entity.ID].Add(typeof(TComponent), new PooledSet()); + entityIDToComponentTypeToComponentIDs[entity.ID].Add(typeof(TComponent), new HashSet()); } entityIDToComponentTypeToComponentIDs[entity.ID][typeof(TComponent)].Add(componentID); @@ -90,7 +90,7 @@ namespace Encompass internal IEnumerable> GetComponentsByEntityAndType(Guid entityID) where TComponent : struct, IComponent { - if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)IDToComponent[id])); } @@ -99,7 +99,7 @@ namespace Encompass internal bool EntityHasComponentOfType(Guid entityID) where TComponent : struct, IComponent { - if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityIDToComponentTypeToComponentIDs.ContainsKey(entityID) && entityIDToComponentTypeToComponentIDs[entityID].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; } @@ -200,7 +200,7 @@ namespace Encompass foreach (var set in entityIDToComponentTypeToComponentIDs[entityID].Values) { - set.Dispose(); + set.Clear(); } entityIDToComponentTypeToComponentIDs[entityID].Dispose(); entityIDToComponentTypeToComponentIDs.Remove(entityID); diff --git a/encompass-cs/ComponentMessageManager.cs b/encompass-cs/ComponentMessageManager.cs index 8efc0bd..8d6cbe6 100644 --- a/encompass-cs/ComponentMessageManager.cs +++ b/encompass-cs/ComponentMessageManager.cs @@ -13,36 +13,36 @@ namespace Encompass private readonly Dictionary> componentMessageTypeToPendingComponentIDs = new Dictionary>(); private readonly Dictionary> componentMessageTypeToComponentIDs = new Dictionary>(); - private readonly Dictionary>> entityToTypeToExistingComponentIDs = new Dictionary>>(); - private readonly Dictionary>> entityToTypeToPendingComponentIDs = new Dictionary>>(); - private readonly Dictionary>> entityToTypeToComponentIDs = new Dictionary>>(); + private readonly Dictionary>> entityToTypeToExistingComponentIDs = new Dictionary>>(); + private readonly Dictionary>> entityToTypeToPendingComponentIDs = new Dictionary>>(); + private readonly Dictionary>> entityToTypeToComponentIDs = new Dictionary>>(); internal void RegisterEntity(Entity entity) { - entityToTypeToComponentIDs[entity] = new PooledDictionary>(); - entityToTypeToPendingComponentIDs[entity] = new PooledDictionary>(); - entityToTypeToExistingComponentIDs[entity] = new PooledDictionary>(); + entityToTypeToComponentIDs[entity] = new PooledDictionary>(ClearMode.Never); + entityToTypeToPendingComponentIDs[entity] = new PooledDictionary>(ClearMode.Never); + entityToTypeToExistingComponentIDs[entity] = new PooledDictionary>(ClearMode.Never); } internal void RegisterDestroyedEntity(Entity entity) { foreach (var set in entityToTypeToComponentIDs[entity].Values) { - set.Dispose(); + set.Clear(); } entityToTypeToComponentIDs[entity].Dispose(); entityToTypeToComponentIDs.Remove(entity); foreach (var set in entityToTypeToPendingComponentIDs[entity].Values) { - set.Dispose(); + set.Clear(); } entityToTypeToPendingComponentIDs[entity].Dispose(); entityToTypeToPendingComponentIDs.Remove(entity); foreach (var set in entityToTypeToExistingComponentIDs[entity].Values) { - set.Dispose(); + set.Clear(); } entityToTypeToExistingComponentIDs[entity].Dispose(); entityToTypeToExistingComponentIDs.Remove(entity); @@ -105,7 +105,7 @@ namespace Encompass if (!entityToTypeToExistingComponentIDs[componentMessage.entity].ContainsKey(typeof(TComponent))) { - entityToTypeToExistingComponentIDs[componentMessage.entity].Add(typeof(TComponent), new PooledSet()); + entityToTypeToExistingComponentIDs[componentMessage.entity].Add(typeof(TComponent), new HashSet()); } entityToTypeToExistingComponentIDs[componentMessage.entity][typeof(TComponent)].Add(componentMessage.componentID); @@ -124,7 +124,7 @@ namespace Encompass if (!entityToTypeToPendingComponentIDs[pendingComponentMessage.entity].ContainsKey(typeof(TComponent))) { - entityToTypeToPendingComponentIDs[pendingComponentMessage.entity].Add(typeof(TComponent), new PooledSet()); + entityToTypeToPendingComponentIDs[pendingComponentMessage.entity].Add(typeof(TComponent), new HashSet()); } entityToTypeToPendingComponentIDs[pendingComponentMessage.entity][typeof(TComponent)].Add(pendingComponentMessage.componentID); @@ -142,7 +142,7 @@ namespace Encompass if (!entityToTypeToComponentIDs[entity].ContainsKey(typeof(TComponent))) { - entityToTypeToComponentIDs[entity].Add(typeof(TComponent), new PooledSet()); + entityToTypeToComponentIDs[entity].Add(typeof(TComponent), new HashSet()); } entityToTypeToComponentIDs[entity][typeof(TComponent)].Add(componentID); @@ -233,7 +233,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadExistingAndPendingComponentsByEntityAndType(Entity entity) where TComponent : struct, IComponent { - if (entityToTypeToComponentIDs.ContainsKey(entity) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityToTypeToComponentIDs.ContainsKey(entity) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -243,7 +243,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadExistingComponentsByEntityAndType(Entity entity) where TComponent : struct, IComponent { - if (entityToTypeToExistingComponentIDs.ContainsKey(entity) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityToTypeToExistingComponentIDs.ContainsKey(entity) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -253,7 +253,7 @@ namespace Encompass internal IEnumerable<(Guid, TComponent)> ReadPendingComponentsByEntityAndType(Entity entity) where TComponent : struct, IComponent { - if (entityToTypeToPendingComponentIDs.ContainsKey(entity) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityToTypeToPendingComponentIDs.ContainsKey(entity) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Select(id => (id, (TComponent)componentIDToComponent[id])); } @@ -282,7 +282,7 @@ namespace Encompass internal bool HasExistingOrPendingComponent(Entity entity) where TComponent : struct, IComponent { - if (entityToTypeToComponentIDs.TryGetValue(entity, out _) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityToTypeToComponentIDs.TryGetValue(entity, out _) && entityToTypeToComponentIDs[entity].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; } @@ -292,7 +292,7 @@ namespace Encompass internal bool HasExistingComponent(Entity entity) where TComponent : struct, IComponent { - if (entityToTypeToExistingComponentIDs.TryGetValue(entity, out _) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityToTypeToExistingComponentIDs.TryGetValue(entity, out _) && entityToTypeToExistingComponentIDs[entity].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; } @@ -302,7 +302,7 @@ namespace Encompass internal bool HasPendingComponent(Entity entity) where TComponent : struct, IComponent { - if (entityToTypeToPendingComponentIDs.TryGetValue(entity, out _) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out PooledSet idSet)) + if (entityToTypeToPendingComponentIDs.TryGetValue(entity, out _) && entityToTypeToPendingComponentIDs[entity].TryGetValue(typeof(TComponent), out HashSet idSet)) { return idSet.Count > 0; }