protected override AdvancedDropdownItem Search(string searchString) { if (string.IsNullOrEmpty(searchString) || m_SearchableElements == null) { return(null); } // Support multiple search words separated by spaces. var searchWords = searchString.ToLower().Split(' '); // We keep two lists. Matches that matches the start of an item always get first priority. var matchesStart = new List <AdvancedDropdownItem>(); var matchesWithin = new List <AdvancedDropdownItem>(); bool found = false; foreach (var e in m_SearchableElements) { var addComponentItem = (ComponentDropdownItem)e; var name = addComponentItem.searchableName.ToLower().Replace(" ", ""); if (AddMatchItem(e, name, searchWords, matchesStart, matchesWithin)) { found = true; } } if (!found) { foreach (var e in m_SearchableElements) { var addComponentItem = (ComponentDropdownItem)e; var name = addComponentItem.searchableNameLocalized.Replace(" ", ""); AddMatchItem(e, name, searchWords, matchesStart, matchesWithin); } } var searchTree = new AdvancedDropdownItem(kSearchHeader); matchesStart.Sort(); foreach (var element in matchesStart) { searchTree.AddChild(element); } matchesWithin.Sort(); foreach (var element in matchesWithin) { searchTree.AddChild(element); } if (searchTree != null) { var addNewScriptGroup = new ComponentDropdownItem("New script"); addNewScriptGroup.name = L10n.Tr("New script"); m_State.SetSelectedIndex(addNewScriptGroup, 0); var addNewScript = new NewScriptDropdownItem(); addNewScript.className = searchString; addNewScriptGroup.AddChild(addNewScript); searchTree.AddChild(addNewScriptGroup); } return(searchTree); }
void OnCreateNewScript(NewScriptDropdownItem item) { item.Create(m_GameObjects, searchString); SendUsabilityAnalyticsEvent(new AnalyticsEventData { name = item.className, filter = searchString, isNewScript = true }); Close(); }