diff --git a/DragonECS.csproj b/DragonECS.csproj
index ec34c10..44dcf4f 100644
--- a/DragonECS.csproj
+++ b/DragonECS.csproj
@@ -10,7 +10,7 @@
DCFApixels.DragonECS
DragonECS
- 0.9.16
+ 0.9.20
DCFApixels
ECS Framework for Game Engines with C# and .Net Platform
DCFApixels
diff --git a/package.json b/package.json
index a376ddc..e596002 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"displayName": "DragonECS",
"description": "C# Entity Component System Framework",
"unity": "2020.3",
- "version": "0.9.16",
+ "version": "0.9.20",
"repository": {
"type": "git",
"url": "https://github.com/DCFApixels/DragonECS.git"
diff --git a/src/Collections/EcsGroup.cs b/src/Collections/EcsGroup.cs
index b7b2cce..ee7fd30 100644
--- a/src/Collections/EcsGroup.cs
+++ b/src/Collections/EcsGroup.cs
@@ -442,7 +442,7 @@ namespace DCFApixels.DragonECS
{
if (++_count >= _dense.Length)
{
- Array.Resize(ref _dense, ArrayUtility.NextPow2(_count << 1));
+ Array.Resize(ref _dense, ArrayUtility.NextPow2(_count));
}
_dense[_count] = entityID;
@@ -576,7 +576,7 @@ namespace DCFApixels.DragonECS
{
if (minSize >= _dense.Length)
{
- Array.Resize(ref _dense, ArrayUtility.NextPow2_ClampOverflow(minSize));
+ Array.Resize(ref _dense, ArrayUtility.CeilPow2_ClampOverflow(minSize));
}
}
@@ -663,7 +663,7 @@ namespace DCFApixels.DragonECS
{
if (dynamicBuffer.Length < _count)
{
- Array.Resize(ref dynamicBuffer, ArrayUtility.NextPow2(_count));
+ Array.Resize(ref dynamicBuffer, ArrayUtility.CeilPow2(_count));
}
int i = 0;
foreach (var e in this)
diff --git a/src/Collections/EcsSpan.cs b/src/Collections/EcsSpan.cs
index 86a0ce2..d68ee27 100644
--- a/src/Collections/EcsSpan.cs
+++ b/src/Collections/EcsSpan.cs
@@ -98,7 +98,7 @@ namespace DCFApixels.DragonECS
{
if (dynamicBuffer.Length < _values.Length)
{
- Array.Resize(ref dynamicBuffer, ArrayUtility.NextPow2(_values.Length));
+ Array.Resize(ref dynamicBuffer, ArrayUtility.CeilPow2(_values.Length));
}
int i = 0;
foreach (var e in this)
@@ -247,7 +247,7 @@ namespace DCFApixels.DragonECS
{
if (dynamicBuffer.Length < _source.Count)
{
- Array.Resize(ref dynamicBuffer, ArrayUtility.NextPow2(_source.Count));
+ Array.Resize(ref dynamicBuffer, ArrayUtility.CeilPow2(_source.Count));
}
int i = 0;
foreach (var e in this)
diff --git a/src/DebugUtils/EcsDebug.cs b/src/DebugUtils/EcsDebug.cs
index 6e525a4..838ae2c 100644
--- a/src/DebugUtils/EcsDebug.cs
+++ b/src/DebugUtils/EcsDebug.cs
@@ -525,7 +525,7 @@ namespace DCFApixels.DragonECS.Core
{
if (id >= _stopwatchs.Length)
{
- Array.Resize(ref _stopwatchs, id << 1);
+ Array.Resize(ref _stopwatchs, ArrayUtility.NextPow2(id));
}
_stopwatchs[id] = new MarkerData(new System.Diagnostics.Stopwatch(), name, id);
}
diff --git a/src/EcsMask.cs b/src/EcsMask.cs
index 3521ad0..2aa5376 100644
--- a/src/EcsMask.cs
+++ b/src/EcsMask.cs
@@ -75,7 +75,7 @@ namespace DCFApixels.DragonECS
get { return _anys; }
}
public EcsMaskFlags Flags
- {
+ {
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return _flags; }
}
@@ -876,7 +876,7 @@ namespace DCFApixels.DragonECS
}
}
- if(_sortAnyChunckBuffer.Length != 0)
+ if (_sortAnyChunckBuffer.Length != 0)
{
for (int i = 0; i < _sortAnyChunckBuffer.Length; i++)
{
diff --git a/src/EcsPipeline.Builder.cs b/src/EcsPipeline.Builder.cs
index 64b6309..e06c7ae 100644
--- a/src/EcsPipeline.Builder.cs
+++ b/src/EcsPipeline.Builder.cs
@@ -245,7 +245,7 @@ namespace DCFApixels.DragonECS
Configs.Instance.Set(config.Key, config.Value);
}
Layers.MergeWith(other.Layers);
-
+
foreach (ref readonly SystemNode otherRecord in new LinkedListCountIterator(_systemNodes, _systemNodesCount, _startIndex))
{
AddNode_Internal(otherRecord.system, otherRecord.layerName, otherRecord.sortOrder, otherRecord.isUnique);
@@ -351,7 +351,7 @@ namespace DCFApixels.DragonECS
//}
}
-
+
IEcsProcess[] allSystems = new IEcsProcess[allSystemsLength];
{
int i = 0;
diff --git a/src/EcsStaticMask.cs b/src/EcsStaticMask.cs
index 840ac11..b34bb38 100644
--- a/src/EcsStaticMask.cs
+++ b/src/EcsStaticMask.cs
@@ -457,9 +457,9 @@ namespace DCFApixels.DragonECS
combinedIncs = combinerBuilder._incsSet;
combinedExcs = combinerBuilder._excsSet;
combinedAnys = combinerBuilder._anysSet;
- combinedIncs.Union(_incsSet);
- combinedExcs.Union(_excsSet);
- combinedAnys.Union(_anysSet);
+ combinedIncs.UnionWith(_incsSet);
+ combinedExcs.UnionWith(_excsSet);
+ combinedAnys.UnionWith(_anysSet);
if (_sortedCombinedChecker == false)
{
diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs
index 3425c50..2ce52bb 100644
--- a/src/EcsWorld.cs
+++ b/src/EcsWorld.cs
@@ -182,7 +182,11 @@ namespace DCFApixels.DragonECS
if (worldID < 0 || (worldID == NULL_WORLD_ID && nullWorld == false))
{
- worldID = (short)_worldIdDispenser.UseFree();
+ int newID = _worldIdDispenser.UseFree();
+#if DEBUG && DRAGONECS_DEEP_DEBUG
+ if (newID > short.MaxValue) { Throw.DeepDebugException(); }
+#endif
+ worldID = (short)newID;
}
else
{
@@ -201,12 +205,12 @@ namespace DCFApixels.DragonECS
_poolsMediator = new PoolsMediator(this);
- int poolsCapacity = ArrayUtility.NextPow2(config.PoolsCapacity);
+ int poolsCapacity = ArrayUtility.CeilPow2Safe(config.PoolsCapacity);
_pools = new IEcsPoolImplementation[poolsCapacity];
_poolSlots = new PoolSlot[poolsCapacity];
ArrayUtility.Fill(_pools, _nullPool);
- int entitiesCapacity = ArrayUtility.NextPow2(config.EntitiesCapacity);
+ int entitiesCapacity = ArrayUtility.CeilPow2Safe(config.EntitiesCapacity);
_entityDispenser = new IdDispenser(entitiesCapacity, 0, OnEntityDispenserResized);
_executorCoures = new Dictionary<(Type, object), IQueryExecutorImplementation>(config.PoolComponentsCapacity);
@@ -566,12 +570,12 @@ namespace DCFApixels.DragonECS
count++;
}
}
- if(count == 0)
+ if (count == 0)
{
return false;
}
}
-
+
return true;
}
bool deepDebug = IsMatchesMaskDeepDebug(mask, entityID);
@@ -1105,7 +1109,7 @@ namespace DCFApixels.DragonECS
public ReadOnlySpan