navigation_polygon.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #ifndef NAVIGATION_POLYGON_H
  2. #define NAVIGATION_POLYGON_H
  3. #include "scene/2d/node_2d.h"
  4. class NavigationPolygon : public Resource {
  5. OBJ_TYPE( NavigationPolygon, Resource );
  6. DVector<Vector2> vertices;
  7. struct Polygon {
  8. Vector<int> indices;
  9. };
  10. Vector<Polygon> polygons;
  11. Vector< DVector<Vector2> > outlines;
  12. protected:
  13. static void _bind_methods();
  14. void _set_polygons(const Array& p_array);
  15. Array _get_polygons() const;
  16. void _set_outlines(const Array& p_array);
  17. Array _get_outlines() const;
  18. public:
  19. void set_vertices(const DVector<Vector2>& p_vertices);
  20. DVector<Vector2> get_vertices() const;
  21. void add_polygon(const Vector<int>& p_polygon);
  22. int get_polygon_count() const;
  23. void add_outline(const DVector<Vector2>& p_outline);
  24. void add_outline_at_index(const DVector<Vector2>& p_outline,int p_index);
  25. void set_outline(int p_idx,const DVector<Vector2>& p_outline);
  26. DVector<Vector2> get_outline(int p_idx) const;
  27. void remove_outline(int p_idx);
  28. int get_outline_count() const;
  29. void clear_outlines();
  30. void make_polygons_from_outlines();
  31. Vector<int> get_polygon(int p_idx);
  32. void clear_polygons();
  33. NavigationPolygon();
  34. };
  35. class Navigation2D;
  36. class NavigationPolygonInstance : public Node2D {
  37. OBJ_TYPE(NavigationPolygonInstance,Node2D);
  38. bool enabled;
  39. int nav_id;
  40. Navigation2D *navigation;
  41. Ref<NavigationPolygon> navpoly;
  42. void _navpoly_changed();
  43. protected:
  44. void _notification(int p_what);
  45. static void _bind_methods();
  46. public:
  47. void set_enabled(bool p_enabled);
  48. bool is_enabled() const;
  49. void set_navigation_polygon(const Ref<NavigationPolygon>& p_navpoly);
  50. Ref<NavigationPolygon> get_navigation_polygon() const;
  51. NavigationPolygonInstance();
  52. };
  53. #endif // NAVIGATIONPOLYGON_H