Fix broken NavigationAgent3D collision avoidance callback
Fix broken NavigationAgent3D collision avoidance callback
This commit is contained in:
parent
f817e7fb0a
commit
15bf337474
@ -34,6 +34,8 @@
|
|||||||
#include "servers/navigation_server_3d.h"
|
#include "servers/navigation_server_3d.h"
|
||||||
|
|
||||||
void NavigationAgent3D::_bind_methods() {
|
void NavigationAgent3D::_bind_methods() {
|
||||||
|
ClassDB::bind_method(D_METHOD("get_rid"), &NavigationAgent3D::get_rid);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_target_desired_distance", "desired_distance"), &NavigationAgent3D::set_target_desired_distance);
|
ClassDB::bind_method(D_METHOD("set_target_desired_distance", "desired_distance"), &NavigationAgent3D::set_target_desired_distance);
|
||||||
ClassDB::bind_method(D_METHOD("get_target_desired_distance"), &NavigationAgent3D::get_target_desired_distance);
|
ClassDB::bind_method(D_METHOD("get_target_desired_distance"), &NavigationAgent3D::get_target_desired_distance);
|
||||||
|
|
||||||
@ -95,8 +97,11 @@ void NavigationAgent3D::_notification(int p_what) {
|
|||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_READY: {
|
case NOTIFICATION_READY: {
|
||||||
agent_parent = Object::cast_to<Node3D>(get_parent());
|
agent_parent = Object::cast_to<Node3D>(get_parent());
|
||||||
|
if (agent_parent != nullptr) {
|
||||||
NavigationServer3D::get_singleton()->agent_set_callback(agent, this, "_avoidance_done");
|
// place agent on navigation map first or else the RVO agent callback creation fails silently later
|
||||||
|
NavigationServer3D::get_singleton()->agent_set_map(get_rid(), agent_parent->get_world_3d()->get_navigation_map());
|
||||||
|
NavigationServer3D::get_singleton()->agent_set_callback(agent, this, "_avoidance_done");
|
||||||
|
}
|
||||||
set_physics_process_internal(true);
|
set_physics_process_internal(true);
|
||||||
} break;
|
} break;
|
||||||
case NOTIFICATION_EXIT_TREE: {
|
case NOTIFICATION_EXIT_TREE: {
|
||||||
|
Loading…
Reference in New Issue
Block a user