diff options
Diffstat (limited to 'modules/navigation/2d/godot_navigation_server_2d.cpp')
-rw-r--r-- | modules/navigation/2d/godot_navigation_server_2d.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/modules/navigation/2d/godot_navigation_server_2d.cpp b/modules/navigation/2d/godot_navigation_server_2d.cpp index 28bcd16310..bf69adc14c 100644 --- a/modules/navigation/2d/godot_navigation_server_2d.cpp +++ b/modules/navigation/2d/godot_navigation_server_2d.cpp @@ -229,6 +229,10 @@ bool GodotNavigationServer2D::is_baking_navigation_polygon(Ref<NavigationPolygon #endif } +Vector<Vector2> GodotNavigationServer2D::simplify_path(const Vector<Vector2> &p_path, real_t p_epsilon) { + return vector_v3_to_v2(NavigationServer3D::get_singleton()->simplify_path(vector_v2_to_v3(p_path), p_epsilon)); +} + GodotNavigationServer2D::GodotNavigationServer2D() {} GodotNavigationServer2D::~GodotNavigationServer2D() {} @@ -385,7 +389,16 @@ bool FORWARD_1_C(agent_is_map_changed, RID, p_agent, rid_to_rid); void FORWARD_2(agent_set_paused, RID, p_agent, bool, p_paused, rid_to_rid, bool_to_bool); bool FORWARD_1_C(agent_get_paused, RID, p_agent, rid_to_rid); -void FORWARD_1(free, RID, p_object, rid_to_rid); +void GodotNavigationServer2D::free(RID p_object) { +#ifdef CLIPPER2_ENABLED + if (navmesh_generator_2d && navmesh_generator_2d->owns(p_object)) { + navmesh_generator_2d->free(p_object); + return; + } +#endif // CLIPPER2_ENABLED + NavigationServer3D::get_singleton()->free(p_object); +} + void FORWARD_2(agent_set_avoidance_callback, RID, p_agent, Callable, p_callback, rid_to_rid, callable_to_callable); bool GodotNavigationServer2D::agent_has_avoidance_callback(RID p_agent) const { return NavigationServer3D::get_singleton()->agent_has_avoidance_callback(p_agent); @@ -449,3 +462,20 @@ void GodotNavigationServer2D::query_path(const Ref<NavigationPathQueryParameters p_query_result->set_path_rids(_query_result.path_rids); p_query_result->set_path_owner_ids(_query_result.path_owner_ids); } + +RID GodotNavigationServer2D::source_geometry_parser_create() { +#ifdef CLIPPER2_ENABLED + if (navmesh_generator_2d) { + return navmesh_generator_2d->source_geometry_parser_create(); + } +#endif // CLIPPER2_ENABLED + return RID(); +} + +void GodotNavigationServer2D::source_geometry_parser_set_callback(RID p_parser, const Callable &p_callback) { +#ifdef CLIPPER2_ENABLED + if (navmesh_generator_2d) { + navmesh_generator_2d->source_geometry_parser_set_callback(p_parser, p_callback); + } +#endif // CLIPPER2_ENABLED +} |