Vixen
02b45cc4
csharp
public sealed class QueryDescription

Which entities a query is about, as three sets of component types and an optional change filter.

Read the guide page for this →

Remarks

Matching is three BitSet tests against an archetype's mask — a superset test, an intersection test and its negation — so the cost of deciding whether ten thousand entities are relevant is proportional to the number of archetypes, not the number of entities. The result is cached per world in a Query.

A description is built once and reused. Building one per frame works and allocates three bit sets and a list for nothing.

Fields and properties (2)

  • public IReadOnlyList<ComponentTypeId> ChangedComponents

    The component types whose change versions the filter looks at.

  • public bool HasChangeFilter

    Whether any change filter is set at all.

Methods (71)

  • public QueryDescription RequireAll(ReadOnlySpan<ComponentTypeId> componentTypes)

    Requires every one of these components.

  • public QueryDescription RequireAny(ReadOnlySpan<ComponentTypeId> componentTypes)

    Requires at least one of these components. An empty set means "no such requirement".

  • public QueryDescription Exclude(ReadOnlySpan<ComponentTypeId> componentTypes)

    Excludes entities that have any of these components.

  • public QueryDescription RequireChanged(ReadOnlySpan<ComponentTypeId> componentTypes)

    Requires these components, and narrows iteration to chunks in which at least one of them has been written since the version the caller passes.

  • public bool Matches(Archetype archetype)

    Whether an archetype's component set satisfies the description.

  • public bool MatchesChange(Chunk chunk, uint since)

    Whether a chunk has been written since a version, per the change filter.

  • public override string ToString()

    Renders the three sets, which is what a diagnostic wants.

  • public QueryDescription WithAll<T0>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

  • public QueryDescription WithAll<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>()

    Requires every one of these components.

  • public QueryDescription WithAny<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>()

    Requires at least one of these components.

  • public QueryDescription WithNone<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>()

    Excludes entities that have any of these components.

  • public QueryDescription WithChanged<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>()

    Requires these components, and narrows iteration to chunks in which one of them changed.

Used by (87, showing 40)

  • ArenaThirdPersonShooter
  • GameClientMultiplayer
  • OrbitSystemEcsStressTest
  • SliceResolverNetworkSoak
  • ThirdPersonShooterGameThirdPersonShooter
  • Vixen_Samples_Multiplayer_CombatantReplicatorMultiplayer
  • Vixen_Samples_Multiplayer_VitalsReplicatorMultiplayer
  • ConstraintStageBenchmarksVixen.Benchmarks.Animation
  • WorldBenchmarksVixen.Benchmarks.Ecs
  • AllNetworkedSourceVixen.Net
  • AnimationSystemVixen.Animation
  • AudioSystemVixen.Audio
  • CameraDirectorSystemVixen.Engine
  • CameraExtractionSystemVixen.Rendering
  • ChunkSequenceVixen.Ecs
  • ClientPredictionVixen.Net
  • CommandBufferTestsVixen.Ecs.Tests
  • ConstraintGizmoSystemVixen.Animation
  • DeterminismTestsVixen.Ecs.Tests
  • EnumeratorVixen.Ecs
  • FoliageBlockersVixen.Rendering.Terrain
  • HandWrittenTransformReplicatorVixen.Net.Generators.Tests
  • HealthReplicatorVixen.Net.Tests
  • IComponentReplicatorVixen.Net
  • IntegrateSystemVixen.Ecs.Tests
  • InterestGridVixen.Net
  • LightExtractionSystemVixen.Rendering
  • LocalPlayerSystemVixen.Net.Engine
  • MeshExtractionSystemVixen.Rendering
  • MoveSystemVixen.Ecs.Tests
  • NavigationSystemVixen.Navigation
  • NetworkAnimatorApplySystemVixen.Net.Animation
  • NetworkAnimatorCaptureSystemVixen.Net.Animation
  • NetworkAnimatorParametersReplicatorVixen.Net.Animation
  • NetworkAnimatorReplicatorVixen.Net.Animation
  • NetworkAudioApplySystemVixen.Net.Audio
  • NetworkAudioCaptureSystemVixen.Net.Audio
  • NetworkAudioSourceReplicatorVixen.Net.Audio
  • NetworkBonesApplySystemVixen.Net.Animation
  • NetworkBonesCaptureSystemVixen.Net.Animation