CaseInsensitiveEntityNameMatchOperation.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. namespace O3DWB
  5. {
  6. public class CaseInsensitiveEntityNameMatchOperation : IEntityNameMatchOperation
  7. {
  8. #region Public Methods
  9. public List<INamedEntity> GetEntitiesWithMatchingNames(List<INamedEntity> namedEntities, string nameToMatch)
  10. {
  11. var foundEntities = new List<INamedEntity>(namedEntities.Count);
  12. nameToMatch = nameToMatch.ToLower();
  13. List<INamedEntity> extactMatchEntities = namedEntities.FindAll(item => item.Name.ToLower() == nameToMatch);
  14. foundEntities.AddRange(extactMatchEntities);
  15. StorePartialMatches(foundEntities, namedEntities, nameToMatch);
  16. return foundEntities;
  17. }
  18. #endregion
  19. #region Private Methods
  20. private void StorePartialMatches(List<INamedEntity> destination, List<INamedEntity> namedEntities, string nameToMatch)
  21. {
  22. foreach (INamedEntity namedEntity in namedEntities)
  23. {
  24. string entityName = namedEntity.Name.ToLower();
  25. if (entityName != nameToMatch)
  26. {
  27. if (entityName.Contains(nameToMatch)) destination.Add(namedEntity);
  28. }
  29. }
  30. }
  31. #endregion
  32. }
  33. }
  34. #endif