Merge pull request #48229 from smix8/issue_47334_navagent3d_target_reached

Fix NavigationAgent3D not emitting "target_reached" Signal
This commit is contained in:
Rémi Verschelde 2021-04-27 13:34:33 +02:00 committed by GitHub
commit 3dfb740a20
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 6 deletions

View file

@ -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;
}
}
}

View file

@ -147,6 +147,7 @@ public:
private:
void update_navigation();
void _check_distance_to_target();
};
#endif