浏览代码

Merge pull request #76 from MGilleronFJ/filters_tryget_getorcreate

Fix implicit write operations in EntityFilterCollection
pull/77/head
Sebastiano Mandalà GitHub 2 年前
父节点
当前提交
deb5ce0d71
找不到此签名对应的密钥 GPG 密钥 ID: 4AEE18F83AFDEB23
共有 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;
}
}
}
}

正在加载...
取消
保存