diff options
author | smix8 <52464204+smix8@users.noreply.github.com> | 2021-04-27 12:31:50 +0200 |
---|---|---|
committer | smix8 <52464204+smix8@users.noreply.github.com> | 2021-04-27 12:31:50 +0200 |
commit | 67b4f9f76a61f355398c9e04f50926460f13e185 (patch) | |
tree | 9eede219cd3c49353c98a0efcb0cb7d69e775324 | |
parent | b95a82d46a4c463815c199b839d8ac81683706b2 (diff) |
Fix NavigationAgent3D not emitting "target_reached" Signal
Fix NavigationAgent3D not emitting "target_reached" Signal when reaching pathfinding target.
-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 |