From 3965b3603a44ace1ae4af0d763c389c9491d5db2 Mon Sep 17 00:00:00 2001 From: Henne Date: Sun, 2 Mar 2025 11:42:35 +0100 Subject: [PATCH] player cell reset flowdirection --- .../flow_field_navigation.gd | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/swarm_engine/flow_field_navigation/flow_field_navigation.gd b/swarm_engine/flow_field_navigation/flow_field_navigation.gd index 67dfe93..33dd174 100644 --- a/swarm_engine/flow_field_navigation/flow_field_navigation.gd +++ b/swarm_engine/flow_field_navigation/flow_field_navigation.gd @@ -148,6 +148,9 @@ func _update_flow_field(): var index = z * grid_size_x + x var flow_direction = (target.position - _get_cell_center_with_coordinates(x,z)).normalized() * (cell_size/2) flow_direction_list[index] = Vector2(flow_direction.x, flow_direction.z) + var target_index = _get_index_from_position(target.position) + flow_direction_list[target_index] = Vector2(0, 0) + func _draw_debug(): if show_grid_center: @@ -213,12 +216,18 @@ func _get_cell_center_with_coordinates(x:int, z:int) -> Vector3: 0, (-half_size_z + (z * cell_size) + (cell_size * 0.5))) +func _get_coordinates_from_position(pos: Vector3) -> Vector2i: + return Vector2i(int((pos.x - position.x + half_size_x) / cell_size), + int((pos.z - position.z + half_size_z) / cell_size)) + func _get_index_from_position(pos: Vector3) -> int: - var x = int((pos.x - position.x + half_size_x) / cell_size) - var z = int((pos.z - position.z + half_size_z) / cell_size) - if x < 0 or x >= grid_size_x or z < 0 or z >= grid_size_z: + var pos_coord = _get_coordinates_from_position(pos) + if _is_coordinate_valid(pos_coord): return -1 - return z * grid_size_x + x + return pos_coord.y * grid_size_x + pos_coord.x + +func _is_coordinate_valid(coord: Vector2i) -> bool: + return coord.x < 0 or coord.x >= grid_size_x or coord.y < 0 or coord.y >= grid_size_z func get_direction_from_position(position: Vector3) -> Vector3: var index = _get_index_from_position(position)