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. public NavigationPolygonData()
  34. {
  35. }
  36.  
  37. public NavigationPolygonData(NavigationPolygonType type, List<SerializeVector2> points)
  38. {
  39. Type = type;
  40. Points = points;
  41. }
  42. /// <summary>
  43. /// 将 Points 字段转为 Vector2[] 类型数据并返回
  44. /// </summary>
  45. public Vector2[] ConvertPointsToVector2Array()
  46. {
  47. if (Points == null)
  48. {
  49. return null;
  50. }
  51.  
  52. var array = new Vector2[Points.Count];
  53. for (var i = 0; i < Points.Count; i++)
  54. {
  55. array[i] = Points[i].AsVector2();
  56. }
  57.  
  58. return array;
  59. }
  60.  
  61. /// <summary>
  62. /// 将 Points 字段转为 Vector2I[] 类型数据并返回
  63. /// </summary>
  64. public Vector2I[] ConvertPointsToVector2IArray()
  65. {
  66. if (Points == null)
  67. {
  68. return null;
  69. }
  70.  
  71. var array = new Vector2I[Points.Count];
  72. for (var i = 0; i < Points.Count; i++)
  73. {
  74. array[i] = Points[i].AsVector2I();
  75. }
  76.  
  77. return array;
  78. }
  79.  
  80. }