void AddEntity(EGID egid, uint toIndex)
        {
            if (_filtersPerGroup.TryGetValue(egid.groupID, out var groupFilter) == false)
            {
                groupFilter = new GroupFilters(32, egid.groupID);
                _filtersPerGroup[egid.groupID] = groupFilter;
            }

            groupFilter.Add(egid.entityID, toIndex);
        }
示例#2
0
        public GroupFilters GetOrCreateGroupFilter(ExclusiveGroupStruct group)
        {
            if (_filtersPerGroup.TryGetValue(group, out var groupFilter) == false)
            {
                groupFilter = new GroupFilters(group);
                _filtersPerGroup.Add(group, groupFilter);
            }

            return(groupFilter);
        }
示例#3
0
            ref FilterGroup CreateOrGetFilterForGroup(int filterID, ExclusiveGroupStruct groupID, RefWrapperType refWrapper)
            {
                var fasterDictionary =
                    _filters.GetOrCreate(refWrapper, () => new FasterDictionary <ExclusiveGroupStruct, GroupFilters>());

                GroupFilters filters =
                    fasterDictionary.GetOrCreate(
                        groupID, () => new GroupFilters(new SharedSveltoDictionaryNative <int, FilterGroup>(0), groupID));

                return(ref filters.CreateOrGetFilter(filterID));
            }
示例#4
0
            public bool TryGetFiltersForGroup <T>(ExclusiveGroupStruct groupID, out GroupFilters groupFilters)
                where T : struct, IEntityComponent
            {
                groupFilters = default;

                if (_filters.TryGetValue(TypeRefWrapper <T> .wrapper, out var fasterDictionary) == false)
                {
                    return(false);
                }

                return(fasterDictionary.TryGetValue(groupID, out groupFilters));
            }
            public bool TryGetFiltersForGroup <T>(ExclusiveGroupStruct groupID, out GroupFilters groupFilters)
                where T : struct, IEntityComponent
            {
                groupFilters = default;

                if (_filters.ContainsKey(TypeRefWrapper <T> .wrapper) == false)
                {
                    return(false);
                }

                return(_filters[TypeRefWrapper <T> .wrapper].TryGetValue(groupID, out groupFilters));
            }
示例#6
0
 public bool TryGetGroupFilter(ExclusiveGroupStruct group, out GroupFilters groupFilter)
 {
     return(_filtersPerGroup.TryGetValue(group, out groupFilter));
 }