GrassMap.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. namespace MTE
  4. {
  5. public static class GrassMap
  6. {
  7. public static IEnumerable<GrassItem> GetAllGrassItems()
  8. {
  9. var allPoints = PointCloud.GetAllPoints();
  10. foreach (var point in allPoints)
  11. {
  12. yield return point as GrassItem;
  13. }
  14. }
  15. public static void GetGrassItemsInCircle(Vector3 center, float radius, List<GrassItem> result)
  16. {
  17. result.Clear();
  18. var pointList = new List<IQuadObject>();
  19. PointCloud.GetPointsInCircle(center, radius, pointList);
  20. foreach (var point in pointList)
  21. {
  22. var item = point as GrassItem;
  23. System.Diagnostics.Debug.Assert(item != null, nameof(item) + " != null");
  24. if (item.Destroyed)
  25. {
  26. continue;
  27. }
  28. result.Add(item);
  29. }
  30. }
  31. public static void Clear()
  32. {
  33. PointCloud.Clear();
  34. }
  35. public static void Insert(GrassItem grassItem)
  36. {
  37. PointCloud.Insert(grassItem);
  38. }
  39. public static void Remove(GrassItem point)
  40. {
  41. PointCloud.Remove(point);
  42. }
  43. private static readonly PointCloudMap PointCloud = new PointCloudMap();
  44. }
  45. }