more cleanup
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
63e9ca63c0
commit
b6ae9eaebc
|
@ -54,8 +54,7 @@ namespace Encompass
|
|||
_indices[entityID] = _idManager.NextID();
|
||||
}
|
||||
|
||||
var ptr = Unsafe.AsPointer(ref component);
|
||||
_components[_indices[entityID]] = Unsafe.AsRef<TComponent>(ptr);
|
||||
_components[_indices[entityID]] = Unsafe.AsRef<TComponent>(Unsafe.AsPointer(ref component));
|
||||
}
|
||||
|
||||
public override bool Remove(int entityID, int priority)
|
||||
|
@ -63,9 +62,7 @@ namespace Encompass
|
|||
if (!_priorities.ContainsKey(entityID) || priority < _priorities[entityID])
|
||||
{
|
||||
_priorities[entityID] = priority;
|
||||
_indices.Remove(entityID);
|
||||
_priorities.Remove(entityID);
|
||||
_idManager.Free(entityID);
|
||||
ForceRemove(entityID);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace Encompass
|
|||
{
|
||||
private readonly SortedList<int, int> _layerOrder = new SortedList<int, int>();
|
||||
|
||||
private readonly Dictionary<int, Dictionary<Type, HashSet<int>>> _layerIndexToComponentStore = new Dictionary<int, Dictionary<Type, HashSet<int>>>();
|
||||
private readonly Dictionary<int, Dictionary<Type, HashSet<int>>> _layerIndexToTypeToID = new Dictionary<int, Dictionary<Type, HashSet<int>>>();
|
||||
private readonly Dictionary<int, HashSet<GeneralRenderer>> _layerIndexToGeneralRenderers = new Dictionary<int, HashSet<GeneralRenderer>>(512);
|
||||
|
||||
private readonly Dictionary<Type, Dictionary<int, int>> _typeToEntityToLayer = new Dictionary<Type, Dictionary<int, int>>(512);
|
||||
|
@ -22,11 +22,11 @@ namespace Encompass
|
|||
|
||||
public void RegisterDrawLayer(int layer)
|
||||
{
|
||||
if (!_layerIndexToComponentStore.ContainsKey(layer))
|
||||
if (!_layerIndexToTypeToID.ContainsKey(layer))
|
||||
{
|
||||
_layerOrder.Add(layer, layer);
|
||||
_layerIndexToGeneralRenderers.Add(layer, new HashSet<GeneralRenderer>());
|
||||
_layerIndexToComponentStore.Add(layer, new Dictionary<Type, HashSet<int>>());
|
||||
_layerIndexToTypeToID.Add(layer, new Dictionary<Type, HashSet<int>>());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ namespace Encompass
|
|||
_typeToEntityToLayer.Add(typeof(TComponent), new Dictionary<int, int>(128));
|
||||
}
|
||||
|
||||
foreach (var pair in _layerIndexToComponentStore)
|
||||
foreach (var pair in _layerIndexToTypeToID)
|
||||
{
|
||||
if (!pair.Value.ContainsKey(typeof(TComponent)))
|
||||
{
|
||||
|
@ -55,14 +55,14 @@ namespace Encompass
|
|||
|
||||
public void RegisterComponentWithLayer<TComponent>(int entityID, int layer) where TComponent : struct, IComponent
|
||||
{
|
||||
if (!_layerIndexToComponentStore.ContainsKey(layer))
|
||||
if (!_layerIndexToTypeToID.ContainsKey(layer))
|
||||
{
|
||||
throw new UndefinedLayerException("Layer {0} is not defined. Use WorldBuilder.RegisterDrawLayer to register the layer.", layer);
|
||||
}
|
||||
|
||||
if (_typeToEntityToLayer[typeof(TComponent)].ContainsKey(entityID)) { UnRegisterComponentWithLayer<TComponent>(entityID); }
|
||||
|
||||
var set = _layerIndexToComponentStore[layer][typeof(TComponent)];
|
||||
var set = _layerIndexToTypeToID[layer][typeof(TComponent)];
|
||||
set.Add(entityID);
|
||||
|
||||
_typeToEntityToLayer[typeof(TComponent)].Add(entityID, layer);
|
||||
|
@ -75,14 +75,14 @@ namespace Encompass
|
|||
if (_typeToEntityToLayer[typeof(TComponent)].ContainsKey(entityID))
|
||||
{
|
||||
var layer = _typeToEntityToLayer[typeof(TComponent)][entityID];
|
||||
_layerIndexToComponentStore[layer][typeof(TComponent)].Remove(entityID);
|
||||
_layerIndexToTypeToID[layer][typeof(TComponent)].Remove(entityID);
|
||||
}
|
||||
_typeToEntityToLayer[typeof(TComponent)].Remove(entityID);
|
||||
}
|
||||
|
||||
public void UnRegisterEntityWithLayer(int entityID)
|
||||
{
|
||||
foreach (var store in _layerIndexToComponentStore.Values)
|
||||
foreach (var store in _layerIndexToTypeToID.Values)
|
||||
{
|
||||
foreach (var set in store.Values)
|
||||
{
|
||||
|
@ -100,7 +100,7 @@ namespace Encompass
|
|||
|
||||
public IEnumerable<(int, Type)> AllInLayer(int layer)
|
||||
{
|
||||
foreach (var kvp in _layerIndexToComponentStore[layer])
|
||||
foreach (var kvp in _layerIndexToTypeToID[layer])
|
||||
{
|
||||
foreach (var id in kvp.Value)
|
||||
{
|
||||
|
|
|
@ -2,6 +2,6 @@ namespace Encompass
|
|||
{
|
||||
public interface IDrawableComponent
|
||||
{
|
||||
int Layer { get; set; }
|
||||
int Layer { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue