소스 검색

Fix implicit write operations in EntityFilterCollection

Add `TryGetGroupFilter`
Fix `Exists` to use `TryGetGroupFilter` instead of `GetGroupFilter`
Rename `GetGroupFilter` => `GetOrCreateGroupFilter` for clarity
pull/76/head
Marc Gilleron 2 년 전
부모
커밋
5b50c863e2
1개의 변경된 파일14개의 추가작업 그리고 4개의 파일을 삭제
  1. +14
    -4
      com.sebaslab.svelto.ecs/Core/Filters/EntityFilterCollection.cs

+ 14
- 4
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;
}
}
}
}

불러오는 중...
취소
저장