adds pooled dictionary to component message manager
parent
26aeb46cb8
commit
062b31dfb8
|
@ -1,8 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
// TODO: object pool for the inner dictionaries so they dont get GC'd
|
||||
using Collections.Pooled;
|
||||
|
||||
namespace Encompass
|
||||
{
|
||||
|
@ -14,9 +13,9 @@ namespace Encompass
|
|||
private readonly Dictionary<Type, HashSet<Guid>> componentMessageTypeToPendingComponentIDs = new Dictionary<Type, HashSet<Guid>>();
|
||||
private readonly Dictionary<Type, HashSet<Guid>> componentMessageTypeToComponentIDs = new Dictionary<Type, HashSet<Guid>>();
|
||||
|
||||
private readonly Dictionary<Entity, Dictionary<Type, HashSet<Guid>>> entityToTypeToExistingComponentIDs = new Dictionary<Entity, Dictionary<Type, HashSet<Guid>>>();
|
||||
private readonly Dictionary<Entity, Dictionary<Type, HashSet<Guid>>> entityToTypeToPendingComponentIDs = new Dictionary<Entity, Dictionary<Type, HashSet<Guid>>>();
|
||||
private readonly Dictionary<Entity, Dictionary<Type, HashSet<Guid>>> entityToTypeToComponentIDs = new Dictionary<Entity, Dictionary<Type, HashSet<Guid>>>();
|
||||
private readonly Dictionary<Entity, PooledDictionary<Type, HashSet<Guid>>> entityToTypeToExistingComponentIDs = new Dictionary<Entity, PooledDictionary<Type, HashSet<Guid>>>();
|
||||
private readonly Dictionary<Entity, PooledDictionary<Type, HashSet<Guid>>> entityToTypeToPendingComponentIDs = new Dictionary<Entity, PooledDictionary<Type, HashSet<Guid>>>();
|
||||
private readonly Dictionary<Entity, PooledDictionary<Type, HashSet<Guid>>> entityToTypeToComponentIDs = new Dictionary<Entity, PooledDictionary<Type, HashSet<Guid>>>();
|
||||
|
||||
internal void ClearMessages()
|
||||
{
|
||||
|
@ -64,8 +63,22 @@ namespace Encompass
|
|||
|
||||
internal void RegisterDestroyedEntity(Entity entity)
|
||||
{
|
||||
foreach (var pooledDictionary in entityToTypeToComponentIDs.Values)
|
||||
{
|
||||
pooledDictionary.Dispose();
|
||||
}
|
||||
entityToTypeToComponentIDs.Remove(entity);
|
||||
|
||||
foreach (var pooledDictionary in entityToTypeToPendingComponentIDs.Values)
|
||||
{
|
||||
pooledDictionary.Dispose();
|
||||
}
|
||||
entityToTypeToPendingComponentIDs.Remove(entity);
|
||||
|
||||
foreach (var pooledDictionary in entityToTypeToExistingComponentIDs.Values)
|
||||
{
|
||||
pooledDictionary.Dispose();
|
||||
}
|
||||
entityToTypeToExistingComponentIDs.Remove(entity);
|
||||
}
|
||||
|
||||
|
@ -82,7 +95,7 @@ namespace Encompass
|
|||
|
||||
if (!entityToTypeToExistingComponentIDs.ContainsKey(componentMessage.entity))
|
||||
{
|
||||
entityToTypeToExistingComponentIDs.Add(componentMessage.entity, new Dictionary<Type, HashSet<Guid>>());
|
||||
entityToTypeToExistingComponentIDs.Add(componentMessage.entity, new PooledDictionary<Type, HashSet<Guid>>());
|
||||
}
|
||||
if (!entityToTypeToExistingComponentIDs[componentMessage.entity].ContainsKey(typeof(TComponent)))
|
||||
{
|
||||
|
@ -105,7 +118,7 @@ namespace Encompass
|
|||
|
||||
if (!entityToTypeToPendingComponentIDs.ContainsKey(pendingComponentMessage.entity))
|
||||
{
|
||||
entityToTypeToPendingComponentIDs.Add(pendingComponentMessage.entity, new Dictionary<Type, HashSet<Guid>>());
|
||||
entityToTypeToPendingComponentIDs.Add(pendingComponentMessage.entity, new PooledDictionary<Type, HashSet<Guid>>());
|
||||
}
|
||||
if (!entityToTypeToPendingComponentIDs[pendingComponentMessage.entity].ContainsKey(typeof(TComponent)))
|
||||
{
|
||||
|
@ -127,7 +140,7 @@ namespace Encompass
|
|||
|
||||
if (!entityToTypeToComponentIDs.ContainsKey(entity))
|
||||
{
|
||||
entityToTypeToComponentIDs.Add(entity, new Dictionary<Type, HashSet<Guid>>());
|
||||
entityToTypeToComponentIDs.Add(entity, new PooledDictionary<Type, HashSet<Guid>>());
|
||||
}
|
||||
if (!entityToTypeToComponentIDs[entity].ContainsKey(typeof(TComponent)))
|
||||
{
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
|
@ -10,7 +9,7 @@
|
|||
<Company>Moonside Games</Company>
|
||||
<Product>Encompass ECS</Product>
|
||||
<PackageProjectUrl>https://github.com/encompass-ecs</PackageProjectUrl>
|
||||
<PackageLicenseUrl></PackageLicenseUrl>
|
||||
<PackageLicenseUrl/>
|
||||
<Copyright>Evan Hemsley 2019</Copyright>
|
||||
<Description>Encompass is an engine-agnostic Hyper ECS framework to help you code games, or other kinds of simulations.</Description>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
|
@ -20,7 +19,10 @@
|
|||
<ItemGroup>
|
||||
<None Include="..\LICENSE">
|
||||
<Pack>True</Pack>
|
||||
<PackagePath></PackagePath>
|
||||
<PackagePath/>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Collections.Pooled" Version="1.0.82"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
Reference in New Issue