Repository: godotengine/godot
File: scene/3d/navigation_obstacle_3d.cpp (C++)

Code before:
void NavigationObstacle3D::set_use_3d_avoidance(bool p_use_3d_avoidance) {
	use_3d_avoidance = p_use_3d_avoidance;
	_update_use_3d_avoidance(use_3d_avoidance);
	notify_property_list_changed();
}

void NavigationObstacle3D::set_velocity(const Vector3 p_velocity) {
	velocity = p_velocity;
	velocity_submitted = true;
}

void NavigationObstacle3D::set_affect_navigation_mesh(bool p_enabled) {
	affect_navigation_mesh = p_enabled;
}

bool NavigationObstacle3D::get_affect_navigation_mesh() const {
	return affect_navigation_mesh;
}

void NavigationObstacle3D::set_carve_navigation_mesh(bool p_enabled) {
	carve_navigation_mesh = p_enabled;
}

bool NavigationObstacle3D::get_carve_navigation_mesh() const {
	return carve_navigation_mesh;
}

void NavigationObstacle3D::_update_map(RID p_map) {
	NavigationServer3D::get_singleton()->obstacle_set_map(obstacle, p_map);
	map_current = p_map;
}

void NavigationObstacle3D::_update_position(const Vector3 p_position) {
	NavigationServer3D::get_singleton()->obstacle_set_position(obstacle, p_position);
}

void NavigationObstacle3D::_update_use_3d_avoidance(bool p_use_3d_avoidance) {
	NavigationServer3D::get_singleton()->obstacle_set_use_3d_avoidance(obstacle, use_3d_avoidance);
	_update_map(map_current);
}

#ifdef DEBUG_ENABLED
void NavigationObstacle3D::_update_fake_agent_radius_debug() {
	bool is_debug_enabled = false;
	if (Engine::get_singleton()->is_editor_hint()) {
		is_debug_enabled = true;
	} else if (NavigationServer3D::get_singleton()->get_debug_enabled() &&
			NavigationServer3D::get_singleton()->get_debug_avoidance_enabled() &&
			NavigationServer3D::get_singleton()->get_debug_navigation_avoidance_enable_obstacles_radius()) {
		is_debug_enabled = true;
	}

Review comment (suggestion):
```suggestion
	PackedStringArray warnings = Node3D::get_configuration_warnings();
```
Should be called on the immediate parent class

Code after:
}

bool NavigationObstacle3D::get_avoidance_enabled() const {
	return avoidance_enabled;
}

void NavigationObstacle3D::set_use_3d_avoidance(bool p_use_3d_avoidance) {
	use_3d_avoidance = p_use_3d_avoidance;
	_update_use_3d_avoidance(use_3d_avoidance);
	notify_property_list_changed();
}

void NavigationObstacle3D::set_velocity(const Vector3 p_velocity) {
	velocity = p_velocity;
	velocity_submitted = true;
}

void NavigationObstacle3D::set_affect_navigation_mesh(bool p_enabled) {
	affect_navigation_mesh = p_enabled;
}

bool NavigationObstacle3D::get_affect_navigation_mesh() const {
	return affect_navigation_mesh;
}

void NavigationObstacle3D::set_carve_navigation_mesh(bool p_enabled) {
	carve_navigation_mesh = p_enabled;
}

bool NavigationObstacle3D::get_carve_navigation_mesh() const {
	return carve_navigation_mesh;
}

PackedStringArray NavigationObstacle3D::get_configuration_warnings() const {
	PackedStringArray warnings = Node3D::get_configuration_warnings();

	if (get_global_rotation().x != 0.0 || get_global_rotation().z != 0.0) {
		warnings.push_back(RTR("NavigationObstacle3D only takes global rotation around the y-axis into account. Rotations around the x-axis or z-axis might lead to unexpected results."));
	}

	const Vector3 global_scale = get_global_basis().get_scale();
	if (global_scale.x < 0.001 || global_scale.y < 0.001 || global_scale.z < 0.001) {
		warnings.push_back(RTR("NavigationObstacle3D does not support negative or zero scaling."));
	}

	if (radius > 0.0 && !get_global_basis().is_conformal()) {
		warnings.push_back(RTR("The agent radius can only be scaled uniformly. The largest scale value along the three axes will be used."));
	}

	return warnings;
}