SFX_ObjectAreaFinder.cs 978 B

1234567891011121314151617181920212223242526272829
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using UnityEngine;
  4. // ReSharper disable once CheckNamespace
  5. namespace QFX.SFX
  6. {
  7. public static class SFX_ObjectAreaFinder
  8. {
  9. public static List<T> FindObjects<T>(Vector3 position, float areaRadius, LayerMask layerMask)
  10. {
  11. var colliders = Physics.OverlapSphere(position, areaRadius, layerMask);
  12. var objectsOfType = colliders.Where(c => c.GetComponent<T>() != null)
  13. .Select(c => c.GetComponent<T>());
  14. return objectsOfType.ToList();
  15. }
  16. public static List<Collider> FindObjects(Vector3 position, float areaRadius, LayerMask layerMask, string tag)
  17. {
  18. var colliders = Physics.OverlapSphere(position, areaRadius, layerMask);
  19. var result = !string.IsNullOrEmpty(tag) ?
  20. colliders.Where(c => c.tag == tag).ToList() :
  21. colliders.ToList();
  22. return result;
  23. }
  24. }
  25. }