|
@@ -30,33 +30,43 @@ This reuse avoids performance implications from frequent object creation if a pr
|
|
|
has a large quantity of simultaneous agents that regularly update their paths.
|
|
|
|
|
|
.. tabs::
|
|
|
- .. code-tab:: gdscript GDScript
|
|
|
+ .. code-tab:: gdscript 2D GDScript
|
|
|
|
|
|
- # prepare query objects
|
|
|
- var query_parameters = NavigationPathQueryParameters2D.new()
|
|
|
- var query_result = NavigationPathQueryResult2D.new()
|
|
|
+ # Prepare query objects.
|
|
|
+ var query_parameters := NavigationPathQueryParameters2D.new()
|
|
|
+ var query_result := NavigationPathQueryResult2D.new()
|
|
|
|
|
|
- # update parameters object
|
|
|
- query_parameters.map = get_world_2d().get_navigation_map()
|
|
|
- query_parameters.start_position = agent2d_current_global_position
|
|
|
- query_parameters.target_position = agent2d_target_global_position
|
|
|
+ func query_path(p_start_position: Vector2, p_target_position: Vector2, p_navigation_layers: int = 1) -> PackedVector2Array:
|
|
|
+ if not is_inside_tree():
|
|
|
+ return PackedVector2Array()
|
|
|
|
|
|
- # update result object
|
|
|
- NavigationServer2D.query_path(query_parameters, query_result)
|
|
|
- var path: PackedVector2Array = query_result.get_path()
|
|
|
+ query_parameters.map = get_world_2d().get_navigation_map()
|
|
|
+ query_parameters.start_position = p_start_position
|
|
|
+ query_parameters.target_position = p_target_position
|
|
|
+ query_parameters.navigation_layers = p_navigation_layers
|
|
|
|
|
|
-.. tabs::
|
|
|
- .. code-tab:: gdscript GDScript
|
|
|
+ NavigationServer2D.query_path(query_parameters, query_result)
|
|
|
+ var path: PackedVector2Array = query_result.get_path()
|
|
|
+
|
|
|
+ return path
|
|
|
+
|
|
|
+
|
|
|
+ .. code-tab:: gdscript 3D GDScript
|
|
|
+
|
|
|
+ # Prepare query objects.
|
|
|
+ var query_parameters := NavigationPathQueryParameters3D.new()
|
|
|
+ var query_result := NavigationPathQueryResult3D.new()
|
|
|
+
|
|
|
+ func query_path(p_start_position: Vector3, p_target_position: Vector3, p_navigation_layers: int = 1) -> PackedVector3Array:
|
|
|
+ if not is_inside_tree():
|
|
|
+ return PackedVector3Array()
|
|
|
|
|
|
- # prepare query objects
|
|
|
- var query_parameters = NavigationPathQueryParameters3D.new()
|
|
|
- var query_result = NavigationPathQueryResult3D.new()
|
|
|
+ query_parameters.map = get_world_3d().get_navigation_map()
|
|
|
+ query_parameters.start_position = p_start_position
|
|
|
+ query_parameters.target_position = p_target_position
|
|
|
+ query_parameters.navigation_layers = p_navigation_layers
|
|
|
|
|
|
- # update parameters object
|
|
|
- query_parameters.map = get_world_3d().get_navigation_map()
|
|
|
- query_parameters.start_position = agent3d_current_global_position
|
|
|
- query_parameters.target_position = agent3d_target_global_position
|
|
|
+ NavigationServer3D.query_path(query_parameters, query_result)
|
|
|
+ var path: PackedVector3Array = query_result.get_path()
|
|
|
|
|
|
- # update result object
|
|
|
- NavigationServer3D.query_path(query_parameters, query_result)
|
|
|
- var path: PackedVector3Array = query_result.get_path()
|
|
|
+ return path
|