From 5b50c863e2e676fcaa121b754ee45a39241024fd Mon Sep 17 00:00:00 2001 From: Marc Gilleron Date: Wed, 11 May 2022 14:52:40 +0100 Subject: [PATCH] Fix implicit write operations in EntityFilterCollection Add `TryGetGroupFilter` Fix `Exists` to use `TryGetGroupFilter` instead of `GetGroupFilter` Rename `GetGroupFilter` => `GetOrCreateGroupFilter` for clarity --- .../Core/Filters/EntityFilterCollection.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/com.sebaslab.svelto.ecs/Core/Filters/EntityFilterCollection.cs b/com.sebaslab.svelto.ecs/Core/Filters/EntityFilterCollection.cs index b20828b..587cf85 100644 --- a/com.sebaslab.svelto.ecs/Core/Filters/EntityFilterCollection.cs +++ b/com.sebaslab.svelto.ecs/Core/Filters/EntityFilterCollection.cs @@ -36,7 +36,7 @@ namespace Svelto.ECS [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool Add(EGID egid, uint toIndex) { - return GetGroupFilter(egid.groupID).Add(egid.entityID, toIndex); + return GetOrCreateGroupFilter(egid.groupID).Add(egid.entityID, toIndex); } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -54,11 +54,21 @@ namespace Svelto.ECS [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool Exists(EGID egid) { - return GetGroupFilter(egid.groupID).Exists(egid.entityID); + if (TryGetGroupFilter(egid.groupID, out var groupFilter)) + { + return groupFilter.Exists(egid.entityID); + } + return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GroupFilters GetGroupFilter(ExclusiveGroupStruct group) + public bool TryGetGroupFilter(ExclusiveGroupStruct group, out GroupFilters groupFilter) + { + return _filtersPerGroup.TryGetValue(group, out groupFilter); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GroupFilters GetOrCreateGroupFilter(ExclusiveGroupStruct group) { if (_filtersPerGroup.TryGetValue(group, out var groupFilter) == false) { @@ -195,4 +205,4 @@ namespace Svelto.ECS readonly ExclusiveGroupStruct _group; } } -} \ No newline at end of file +}