using System.Collections.Generic; using System.Linq; using System.Threading; using UnityEngine; namespace Unity.VisualScripting { public class LooseAssemblyNameOptionTree : FuzzyOptionTree { public LooseAssemblyNameOptionTree() : base(new GUIContent("Assembly")) { looseAssemblyNames = Codebase.assemblies.Select(a => new LooseAssemblyName(a.GetName().Name)).ToList(); } private readonly List looseAssemblyNames; public override bool searchable { get; } = true; public override IEnumerable Root() { return looseAssemblyNames.OrderBy(lan => lan.name).Cast(); } public override IEnumerable Children(object parent) { return Enumerable.Empty(); } public override IEnumerable SearchResults(string query, CancellationToken cancellation) { return looseAssemblyNames.Cancellable(cancellation).OrderableSearchFilter(query, LooseAssemblyNameOption.Haystack).Cast(); } public override string SearchResultLabel(object item, string query) { return LooseAssemblyNameOption.SearchResultLabel((LooseAssemblyName)item, query); } } }