Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / map / NavigationPolygonData.cs
  1.  
  2. using System.Collections.Generic;
  3. using System.Text.Json.Serialization;
  4. using Godot;
  5.  
  6. public enum NavigationPolygonType
  7. {
  8. /// <summary>
  9. /// 外轮廓
  10. /// </summary>
  11. Out,
  12. /// <summary>
  13. /// 内轮廓
  14. /// </summary>
  15. In,
  16. }
  17.  
  18. /// <summary>
  19. /// 描述导航多边形数据
  20. /// </summary>
  21. public class NavigationPolygonData
  22. {
  23. /// <summary>
  24. /// 导航轮廓类型
  25. /// </summary>
  26. [JsonInclude] public NavigationPolygonType Type;
  27.  
  28. /// <summary>
  29. /// 多边形的顶点
  30. /// </summary>
  31. [JsonInclude] public List<SerializeVector2> Points = new List<SerializeVector2>();
  32.  
  33. /// <summary>
  34. /// 将 Points 字段转为 Vector2[] 类型数据并返回
  35. /// </summary>
  36. public Vector2[] ConvertPointsToVector2Array()
  37. {
  38. if (Points == null)
  39. {
  40. return null;
  41. }
  42.  
  43. var array = new Vector2[Points.Count];
  44. for (var i = 0; i < Points.Count; i++)
  45. {
  46. array[i] = Points[i].AsVector2();
  47. }
  48.  
  49. return array;
  50. }
  51.  
  52. /// <summary>
  53. /// 将 Points 字段转为 Vector2I[] 类型数据并返回
  54. /// </summary>
  55. public Vector2I[] ConvertPointsToVector2IArray()
  56. {
  57. if (Points == null)
  58. {
  59. return null;
  60. }
  61.  
  62. var array = new Vector2I[Points.Count];
  63. for (var i = 0; i < Points.Count; i++)
  64. {
  65. array[i] = Points[i].AsVector2I();
  66. }
  67.  
  68. return array;
  69. }
  70.  
  71. }