add extra component store
parent
7029b9f52e
commit
b644f4fb4b
|
@ -8,12 +8,14 @@ namespace Encompass
|
||||||
{
|
{
|
||||||
private readonly ComponentStore existingComponentStore;
|
private readonly ComponentStore existingComponentStore;
|
||||||
private readonly ComponentStore immediateComponentStore;
|
private readonly ComponentStore immediateComponentStore;
|
||||||
public Dictionary<Type, int> TypeToIndex { get; }
|
private readonly ComponentStore existingAndImmediateComponentStore;
|
||||||
|
|
||||||
public ComponentStore UpToDateComponentStore { get; private set; }
|
public ComponentStore UpToDateComponentStore { get; private set; }
|
||||||
|
|
||||||
|
public Dictionary<Type, int> TypeToIndex { get; }
|
||||||
|
|
||||||
public ComponentUpdateManager(Dictionary<Type, int> typeToIndex)
|
public ComponentUpdateManager(Dictionary<Type, int> typeToIndex)
|
||||||
{
|
{
|
||||||
|
existingAndImmediateComponentStore = new ComponentStore(typeToIndex);
|
||||||
existingComponentStore = new ComponentStore(typeToIndex);
|
existingComponentStore = new ComponentStore(typeToIndex);
|
||||||
immediateComponentStore = new ComponentStore(typeToIndex);
|
immediateComponentStore = new ComponentStore(typeToIndex);
|
||||||
UpToDateComponentStore = new ComponentStore(typeToIndex);
|
UpToDateComponentStore = new ComponentStore(typeToIndex);
|
||||||
|
@ -22,6 +24,7 @@ namespace Encompass
|
||||||
|
|
||||||
public void RegisterComponentType<TComponent>() where TComponent : struct, IComponent
|
public void RegisterComponentType<TComponent>() where TComponent : struct, IComponent
|
||||||
{
|
{
|
||||||
|
existingAndImmediateComponentStore.RegisterComponentType<TComponent>();
|
||||||
existingComponentStore.RegisterComponentType<TComponent>();
|
existingComponentStore.RegisterComponentType<TComponent>();
|
||||||
immediateComponentStore.RegisterComponentType<TComponent>();
|
immediateComponentStore.RegisterComponentType<TComponent>();
|
||||||
UpToDateComponentStore.RegisterComponentType<TComponent>();
|
UpToDateComponentStore.RegisterComponentType<TComponent>();
|
||||||
|
@ -29,6 +32,7 @@ namespace Encompass
|
||||||
|
|
||||||
internal void Clear()
|
internal void Clear()
|
||||||
{
|
{
|
||||||
|
existingAndImmediateComponentStore.ClearAll();
|
||||||
existingComponentStore.ClearAll();
|
existingComponentStore.ClearAll();
|
||||||
immediateComponentStore.ClearAll();
|
immediateComponentStore.ClearAll();
|
||||||
UpToDateComponentStore.ClearAll();
|
UpToDateComponentStore.ClearAll();
|
||||||
|
@ -61,6 +65,7 @@ namespace Encompass
|
||||||
{
|
{
|
||||||
if (immediateComponentStore.Remove<TComponent>(entity.ID, priority))
|
if (immediateComponentStore.Remove<TComponent>(entity.ID, priority))
|
||||||
{
|
{
|
||||||
|
existingAndImmediateComponentStore.Remove<TComponent>(entity.ID, priority);
|
||||||
UpToDateComponentStore.Remove<TComponent>(entity.ID, priority);
|
UpToDateComponentStore.Remove<TComponent>(entity.ID, priority);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -81,6 +86,7 @@ namespace Encompass
|
||||||
|
|
||||||
private void RegisterExistingOrImmediateComponentMessage<TComponent>(Entity entity, TComponent component) where TComponent : struct, IComponent
|
private void RegisterExistingOrImmediateComponentMessage<TComponent>(Entity entity, TComponent component) where TComponent : struct, IComponent
|
||||||
{
|
{
|
||||||
|
existingAndImmediateComponentStore.Set(entity.ID, component);
|
||||||
UpToDateComponentStore.Set(entity.ID, component);
|
UpToDateComponentStore.Set(entity.ID, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +99,7 @@ namespace Encompass
|
||||||
|
|
||||||
internal IEnumerable<(TComponent, int)> ReadExistingAndImmediateComponentsByType<TComponent>() where TComponent : struct, IComponent
|
internal IEnumerable<(TComponent, int)> ReadExistingAndImmediateComponentsByType<TComponent>() where TComponent : struct, IComponent
|
||||||
{
|
{
|
||||||
return UpToDateComponentStore.All<TComponent>();
|
return existingAndImmediateComponentStore.All<TComponent>();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal IEnumerable<(TComponent, int)> ReadExistingComponentsByType<TComponent>() where TComponent : struct, IComponent
|
internal IEnumerable<(TComponent, int)> ReadExistingComponentsByType<TComponent>() where TComponent : struct, IComponent
|
||||||
|
@ -136,7 +142,7 @@ namespace Encompass
|
||||||
|
|
||||||
internal bool SomeExistingOrImmediateComponent<TComponent>() where TComponent : struct, IComponent
|
internal bool SomeExistingOrImmediateComponent<TComponent>() where TComponent : struct, IComponent
|
||||||
{
|
{
|
||||||
return UpToDateComponentStore.Any<TComponent>();
|
return existingAndImmediateComponentStore.Any<TComponent>();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool SomeExistingComponent<TComponent>() where TComponent : struct, IComponent
|
internal bool SomeExistingComponent<TComponent>() where TComponent : struct, IComponent
|
||||||
|
@ -165,12 +171,12 @@ namespace Encompass
|
||||||
|
|
||||||
internal bool HasExistingOrImmediateComponent<TComponent>(Entity entity) where TComponent : struct, IComponent
|
internal bool HasExistingOrImmediateComponent<TComponent>(Entity entity) where TComponent : struct, IComponent
|
||||||
{
|
{
|
||||||
return UpToDateComponentStore.Has<TComponent>(entity.ID);
|
return existingAndImmediateComponentStore.Has<TComponent>(entity.ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool HasExistingOrImmediateComponent(Entity entity, Type type)
|
internal bool HasExistingOrImmediateComponent(Entity entity, Type type)
|
||||||
{
|
{
|
||||||
return UpToDateComponentStore.Has(type, entity.ID);
|
return existingAndImmediateComponentStore.Has(type, entity.ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal bool HasExistingComponent<TComponent>(Entity entity) where TComponent : struct, IComponent
|
internal bool HasExistingComponent<TComponent>(Entity entity) where TComponent : struct, IComponent
|
||||||
|
|
Loading…
Reference in New Issue