CaseSensitiveEntityNameMatchOperation.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. namespace O3DWB
  5. {
  6. public class CaseSensitiveEntityNameMatchOperation : 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. List<INamedEntity> extactMatchEntities = namedEntities.FindAll(item => item.Name == nameToMatch);
  13. foundEntities.AddRange(extactMatchEntities);
  14. StorePartialMatches(foundEntities, namedEntities, nameToMatch);
  15. return foundEntities;
  16. }
  17. #endregion
  18. #region Private Methods
  19. private void StorePartialMatches(List<INamedEntity> destination, List<INamedEntity> namedEntities, string nameToMatch)
  20. {
  21. foreach (INamedEntity namedEntity in namedEntities)
  22. {
  23. if (namedEntity.Name != nameToMatch)
  24. {
  25. if (nameToMatch.Contains(namedEntity.Name)) destination.Add(namedEntity);
  26. }
  27. }
  28. }
  29. #endregion
  30. }
  31. }
  32. #endif