diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-19 16:28:30 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-19 16:28:30 +0200 |
commit | fba68034860b74039aeaafd160eaeb4e17f7054b (patch) | |
tree | 83eb90e81086c0f0f2407a44ca1cb50b34a1e930 /servers | |
parent | 626c6a0ff877ee3f4e42e38c42d61a1af07c4c37 (diff) | |
parent | 58593d1bb706410bbdbd265ed8b698eb95b7b61f (diff) | |
download | redot-engine-fba68034860b74039aeaafd160eaeb4e17f7054b.tar.gz |
Merge pull request #90876 from smix8/source_geometry_callback
Add navigation mesh source geometry parsers and callbacks
Diffstat (limited to 'servers')
-rw-r--r-- | servers/navigation_server_2d.cpp | 3 | ||||
-rw-r--r-- | servers/navigation_server_2d.h | 3 | ||||
-rw-r--r-- | servers/navigation_server_2d_dummy.h | 3 | ||||
-rw-r--r-- | servers/navigation_server_3d.cpp | 3 | ||||
-rw-r--r-- | servers/navigation_server_3d.h | 3 | ||||
-rw-r--r-- | servers/navigation_server_3d_dummy.h | 3 |
6 files changed, 18 insertions, 0 deletions
diff --git a/servers/navigation_server_2d.cpp b/servers/navigation_server_2d.cpp index 625ae8abde..c5ce82265b 100644 --- a/servers/navigation_server_2d.cpp +++ b/servers/navigation_server_2d.cpp @@ -165,6 +165,9 @@ void NavigationServer2D::_bind_methods() { ClassDB::bind_method(D_METHOD("bake_from_source_geometry_data_async", "navigation_polygon", "source_geometry_data", "callback"), &NavigationServer2D::bake_from_source_geometry_data_async, DEFVAL(Callable())); ClassDB::bind_method(D_METHOD("is_baking_navigation_polygon", "navigation_polygon"), &NavigationServer2D::is_baking_navigation_polygon); + ClassDB::bind_method(D_METHOD("source_geometry_parser_create"), &NavigationServer2D::source_geometry_parser_create); + ClassDB::bind_method(D_METHOD("source_geometry_parser_set_callback", "parser", "callback"), &NavigationServer2D::source_geometry_parser_set_callback); + ClassDB::bind_method(D_METHOD("simplify_path", "path", "epsilon"), &NavigationServer2D::simplify_path); ClassDB::bind_method(D_METHOD("free_rid", "rid"), &NavigationServer2D::free); diff --git a/servers/navigation_server_2d.h b/servers/navigation_server_2d.h index 39d4c19064..a8d9678a6f 100644 --- a/servers/navigation_server_2d.h +++ b/servers/navigation_server_2d.h @@ -306,6 +306,9 @@ public: virtual void bake_from_source_geometry_data_async(const Ref<NavigationPolygon> &p_navigation_mesh, const Ref<NavigationMeshSourceGeometryData2D> &p_source_geometry_data, const Callable &p_callback = Callable()) = 0; virtual bool is_baking_navigation_polygon(Ref<NavigationPolygon> p_navigation_polygon) const = 0; + virtual RID source_geometry_parser_create() = 0; + virtual void source_geometry_parser_set_callback(RID p_parser, const Callable &p_callback) = 0; + virtual Vector<Vector2> simplify_path(const Vector<Vector2> &p_path, real_t p_epsilon) = 0; NavigationServer2D(); diff --git a/servers/navigation_server_2d_dummy.h b/servers/navigation_server_2d_dummy.h index 5d4cfbf91b..465cfcca98 100644 --- a/servers/navigation_server_2d_dummy.h +++ b/servers/navigation_server_2d_dummy.h @@ -170,6 +170,9 @@ public: void bake_from_source_geometry_data_async(const Ref<NavigationPolygon> &p_navigation_mesh, const Ref<NavigationMeshSourceGeometryData2D> &p_source_geometry_data, const Callable &p_callback = Callable()) override {} bool is_baking_navigation_polygon(Ref<NavigationPolygon> p_navigation_polygon) const override { return false; } + RID source_geometry_parser_create() override { return RID(); } + void source_geometry_parser_set_callback(RID p_parser, const Callable &p_callback) override {} + Vector<Vector2> simplify_path(const Vector<Vector2> &p_path, real_t p_epsilon) override { return Vector<Vector2>(); } void set_debug_enabled(bool p_enabled) {} diff --git a/servers/navigation_server_3d.cpp b/servers/navigation_server_3d.cpp index fda26aacc1..b21c6b60f0 100644 --- a/servers/navigation_server_3d.cpp +++ b/servers/navigation_server_3d.cpp @@ -188,6 +188,9 @@ void NavigationServer3D::_bind_methods() { ClassDB::bind_method(D_METHOD("is_baking_navigation_mesh", "navigation_mesh"), &NavigationServer3D::is_baking_navigation_mesh); #endif // _3D_DISABLED + ClassDB::bind_method(D_METHOD("source_geometry_parser_create"), &NavigationServer3D::source_geometry_parser_create); + ClassDB::bind_method(D_METHOD("source_geometry_parser_set_callback", "parser", "callback"), &NavigationServer3D::source_geometry_parser_set_callback); + ClassDB::bind_method(D_METHOD("simplify_path", "path", "epsilon"), &NavigationServer3D::simplify_path); ClassDB::bind_method(D_METHOD("free_rid", "rid"), &NavigationServer3D::free); diff --git a/servers/navigation_server_3d.h b/servers/navigation_server_3d.h index 5a93c662b2..17c0771732 100644 --- a/servers/navigation_server_3d.h +++ b/servers/navigation_server_3d.h @@ -351,6 +351,9 @@ public: virtual bool is_baking_navigation_mesh(Ref<NavigationMesh> p_navigation_mesh) const = 0; #endif // _3D_DISABLED + virtual RID source_geometry_parser_create() = 0; + virtual void source_geometry_parser_set_callback(RID p_parser, const Callable &p_callback) = 0; + virtual Vector<Vector3> simplify_path(const Vector<Vector3> &p_path, real_t p_epsilon) = 0; NavigationServer3D(); diff --git a/servers/navigation_server_3d_dummy.h b/servers/navigation_server_3d_dummy.h index 7079aa66be..5c9e97d226 100644 --- a/servers/navigation_server_3d_dummy.h +++ b/servers/navigation_server_3d_dummy.h @@ -182,6 +182,9 @@ public: bool is_baking_navigation_mesh(Ref<NavigationMesh> p_navigation_mesh) const override { return false; } #endif // _3D_DISABLED + RID source_geometry_parser_create() override { return RID(); } + void source_geometry_parser_set_callback(RID p_parser, const Callable &p_callback) override {} + Vector<Vector3> simplify_path(const Vector<Vector3> &p_path, real_t p_epsilon) override { return Vector<Vector3>(); } void free(RID p_object) override {} |