Struct EntityQueryMask
Provides an efficient test of whether a specific archetype is included in the set of archetypes matched by an EntityQuery.
Namespace: Unity.Entities
Assembly: Unity.Entities.dll
Syntax
public struct EntityQueryMask
Remarks
Use a query mask to quickly identify whether an entity's archetype would be matched by an EntityQuery.
var mask = query.GetEntityQueryMask();
bool doesArchetypeMatch = mask.MatchesIgnoreFilter(entity);
You can create up to 1024 unique EntityQueryMasks in an application.
Note that EntityQueryMask only filters by Archetype. It ignores any filtering on the EntityQuery (by shared component, change version, or order version), or the state of any enableable components.
One specific instance to be aware of is that if a query uses WithNone<T1>() with an enableable type T, an EntityQueryMask created from the query will effectively ignore this constraint. This is because for enableable types, WithNone matches both archetypes that don't contain T (as expected) but also those that do; entities in the latter archetypes could still match the query if their T component is disabled. Since EntityQueryMask ignores enableable component state, this means it considers an archetype to match whether or not it has T, meaning the WithNone(T) constraint has no effect. Consider using WithAbsent<T1>() in this case, if the intent is for the query mask to only match entities which don't have T at all.
Methods
Name | Description |
---|---|
Matches(ArchetypeChunk) | Obsolete. Use MatchesIgnoreFilter(ArchetypeChunk) instead. |
Matches(Entity) | Obsolete. Use MatchesIgnoreFilter(Entity) instead. |
Matches(EntityArchetype) | Reports whether the archetype would be selected by the EntityQuery instance used to create this entity query mask. |
MatchesIgnoreFilter(ArchetypeChunk) | Reports whether a chunk's archetype is in the set of archetypes matched by this query. |
MatchesIgnoreFilter(Entity) | Reports whether an entity's archetype is in the set of archetypes matched by this query. |