diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-04-27 13:34:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-27 13:34:33 +0200 |
commit | 3dfb740a200019021accdb888383f297237763cc (patch) | |
tree | 2be11bbd6846eca26f9224fddf21022e4a73e3cc /scene/3d | |
parent | 6bcf98f8c0b6c63a7e899c88a8056b1c8abef97e (diff) | |
parent | 67b4f9f76a61f355398c9e04f50926460f13e185 (diff) |
Merge pull request #48229 from smix8/issue_47334_navagent3d_target_reached
Fix NavigationAgent3D not emitting "target_reached" Signal
Diffstat (limited to 'scene/3d')
-rw-r--r-- | scene/3d/navigation_agent_3d.cpp | 17 | ||||
-rw-r--r-- | scene/3d/navigation_agent_3d.h | 1 |
2 files changed, 12 insertions, 6 deletions
diff --git a/scene/3d/navigation_agent_3d.cpp b/scene/3d/navigation_agent_3d.cpp index 4f5e56e227..64cfe4dca7 100644 --- a/scene/3d/navigation_agent_3d.cpp +++ b/scene/3d/navigation_agent_3d.cpp @@ -111,12 +111,7 @@ void NavigationAgent3D::_notification(int p_what) { case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { if (agent_parent) { NavigationServer3D::get_singleton()->agent_set_position(agent, agent_parent->get_global_transform().origin); - if (!target_reached) { - if (distance_to_target() < target_desired_distance) { - emit_signal("target_reached"); - target_reached = true; - } - } + _check_distance_to_target(); } } break; } @@ -314,6 +309,7 @@ void NavigationAgent3D::update_navigation() { while (o.distance_to(navigation_path[nav_path_index] - Vector3(0, navigation_height_offset, 0)) < target_desired_distance) { nav_path_index += 1; if (nav_path_index == navigation_path.size()) { + _check_distance_to_target(); nav_path_index -= 1; navigation_finished = true; emit_signal("navigation_finished"); @@ -322,3 +318,12 @@ void NavigationAgent3D::update_navigation() { } } } + +void NavigationAgent3D::_check_distance_to_target() { + if (!target_reached) { + if (distance_to_target() < target_desired_distance) { + emit_signal("target_reached"); + target_reached = true; + } + } +} diff --git a/scene/3d/navigation_agent_3d.h b/scene/3d/navigation_agent_3d.h index 814c0714e8..56da2d1acf 100644 --- a/scene/3d/navigation_agent_3d.h +++ b/scene/3d/navigation_agent_3d.h @@ -147,6 +147,7 @@ public: private: void update_navigation(); + void _check_distance_to_target(); }; #endif |