Exemplo n.º 1
0
            public bool TryGetTransientFilter <T>(CombinedFilterID filterID, out EntityFilterCollection entityCollection)
                where T : unmanaged, IEntityComponent
            {
                var combineFilterIDs = Internal_FilterHelper.CombineFilterIDs <T>(filterID);

                if (_transientEntityFilters.TryFindIndex(combineFilterIDs, out var index))
                {
                    entityCollection = _transientEntityFilters.GetDirectValueByRef(index);
                    return(true);
                }

                entityCollection = default;
                return(false);
            }
Exemplo n.º 2
0
            /// <summary>
            /// Creates a transient filter. Transient filters are deleted after each submission
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <returns></returns>
            public ref EntityFilterCollection GetOrCreateTransientFilter <T>(CombinedFilterID filterID)
                where T : unmanaged, IEntityComponent
            {
                var combineFilterIDs = Internal_FilterHelper.CombineFilterIDs <T>(filterID);

                if (_transientEntityFilters.TryFindIndex(combineFilterIDs, out var index))
                {
                    return(ref _transientEntityFilters.GetDirectValueByRef(index));
                }

                var filterCollection = new EntityFilterCollection(filterID);

                _transientEntityFilters.Add(combineFilterIDs, filterCollection);

                return(ref _transientEntityFilters.GetDirectValueByRef((uint)(_transientEntityFilters.count - 1)));
            }
Exemplo n.º 3
0
            public ref EntityFilterCollection GetOrCreatePersistentFilter <T>(CombinedFilterID filterID)
                where T : unmanaged, IEntityComponent
            {
                long combineFilterIDs = Internal_FilterHelper.CombineFilterIDs <T>(filterID);

                if (_persistentEntityFilters.TryFindIndex(combineFilterIDs, out var index) == true)
                {
                    return(ref _persistentEntityFilters.GetDirectValueByRef(index));
                }

                var typeRef          = TypeRefWrapper <T> .wrapper;
                var filterCollection = new EntityFilterCollection(filterID);

                _persistentEntityFilters.Add(combineFilterIDs, filterCollection);

                var lastIndex = _persistentEntityFilters.count - 1;

                _indicesOfPersistentFiltersUsedByThisComponent.GetOrAdd(new NativeRefWrapperType(typeRef),
                                                                        () => new NativeDynamicArrayCast <int>(1, Svelto.Common.Allocator.Persistent)).Add(lastIndex);

                return(ref _persistentEntityFilters.GetDirectValueByRef((uint)lastIndex));
            }
Exemplo n.º 4
0
            public bool TryGetPersistentFilter <T>(CombinedFilterID combinedFilterID, out EntityFilterCollection entityCollection)
                where T : unmanaged, IBaseEntityComponent
            {
                long combineFilterIDs = Internal_FilterHelper.CombineFilterIDs <T>(combinedFilterID);

                if (_persistentEntityFilters.TryFindIndex(combineFilterIDs, out var index) == true)
                {
                    entityCollection = _persistentEntityFilters.GetDirectValueByRef(index);
                    return(true);
                }

                entityCollection = default;
                return(false);
            }
Exemplo n.º 5
0
 internal EntityFilterIterator(EntityFilterCollection filter)
 {
     _filter     = filter;
     _indexGroup = -1;
     _current    = default;
 }