Vixen
02b45cc4
csharp
public sealed class FacetSet

What a move says about itself: a sorted run of facets, matched by walking it.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

Sorted, so matching two sets is a merge and not a search. A query's required set and a candidate's set are both ordered on (key, value), so testing containment walks both once — linear in the smaller, no hashing, no allocation, and entirely predictable, which matters because selection touches every candidate in the set.

Immutable. A set is shared by every character playing the move it describes, and building one is a bake-time cost nobody should pay in a frame.

Fields and properties (4)

  • public static FacetSet Empty

    The set that says nothing.

  • public int Count

    How many facets it holds.

  • public ReadOnlySpan<Facet> Facets

    The facets, in order.

  • public ReadOnlySpan<ulong> Packed

    The same facets as one number each, sorted. What a matching pass reads.

Methods (6)

  • public static FacetSet Of(params ReadOnlySpan<Facet> source)

    Builds a set, sorting and de-duplicating.

  • public static FacetSet Of(params ReadOnlySpan<(string Key, string Value)> pairs)

    Builds a set from key=value pairs.

  • public bool Contains(Facet facet)

    Whether the set says this.

  • public bool ContainsAll(FacetSet required)

    Whether the set says everything another one does.

  • public bool TryGet(Symbol key, out Symbol value)

    The value this set gives a key, if it gives one.

  • public override string ToString()

    Returns a string that represents the current object.

Used by (30)

  • MoveSelectionBenchmarksVixen.Benchmarks.Animation
  • AuthoringTestsVixen.Animation.Tests
  • CoverageCellVixen.Animation
  • FacetPredicateVixen.Animation
  • LoadPathTestsVixen.Animation.Tests
  • MoveCandidateVixen.Animation
  • MoveCoverageVixen.Animation
  • MoveEntryVixen.Animation
  • MoveEntryRecordVixen.Animation
  • MoveExplanationsVixen.Animation
  • MoveQueryVixen.Animation
  • MoveSetVixen.Animation
  • MoveSetTestsVixen.Animation.Tests
  • MoveTransitionTestsVixen.Animation.Tests
  • ProxyShapeVixen.Animation
  • ProxyShapeSetVixen.Animation
  • ProxyShapeTestsVixen.Animation.Tests
  • ProxyShapesVixen.Animation
  • SeamTestsVixen.Animation.Tests
  • ShapeClassMemberVixen.Animation
  • ShapeTagsVixen.Animation
  • ShapeVocabularyVixen.Animation
  • TableTestSelectorVixen.Animation.Tests
  • TestBodyVixen.Animation.Tests
  • TransitionRuleRecordVixen.Animation
  • AuthoringContextVixen.Editor.AssetEditors
  • MoveQueryTextVixen.Editor.AssetEditors
  • MoveSetImporterTestsVixen.Editor.Assets.Tests
  • MoveSetTestsVixen.Editor.AssetEditors.Tests
  • MoveSetViewVixen.Editor.AssetEditors