Properties
-
Node3D BOUNDS -
Vector3[] path_points = [] -
int current_path_index = 0 -
float path_timer = 0.0 -
float path_update_interval = 10.0 -
float visit_distance = 0.2 -
float distance_threshold = 4.0 -
Vector3[] available_waypoints = [] -
Array[] perimeter_boundary = [] -
PackedVector3Array bounds_vertices = [] -
Array[] bounds_edges = [] -
Vector2 bounds_min -
Vector2 bounds_max -
float max_speed = 0.5 -
float min_speed = 0.1 -
float speed_distance_threshold = 2.0 -
Vector2 current_movement_direction = Vector2(0, 0) -
float direction_change_threshold = 0.3 -
float stuck_detection_timer = 0.0 -
float stuck_check_interval = 2.0 -
Vector2 last_position = Vector2(0, 0) -
float min_expected_movement = 0.1 -
bool is_idling_between_points = false -
float idle_timer = 0.0 -
float idle_duration = 3.0 -
float direction_change_timer = 0.0 -
float direction_change_interval = 2.0 -
Vector2 current_input = Vector2(0, 0) -
float stuck_threshold_time = 3.0
Methods
-
void _ready() -
void _physics_process(float delta) -
void _move_towards_current_target(float delta) -
void _pick_new_path() -
Vector3 _find_next_waypoint_in_range(Vector3 from_point, Vector3[] candidates) -
void _analyze_bounds_mesh() -
void _extract_vertices_and_edges_from_mesh(MeshInstance3D mesh_instance) -
void _add_edge(int v1, int v2) -
void _detect_perimeter_boundary() -
void _count_edge_usage(Dictionary edge_count, int v1, int v2) -
void _generate_pathfinding_waypoints() -
bool _is_point_inside_shape(Vector2 point) -
bool _is_point_inside_perimeter_polygon(Vector2 point) -
Vector2[] _get_ordered_perimeter_points() -
bool _is_point_safely_inside_perimeter(Vector2 point, float safety_margin = 0.5) -
float _distance_point_to_line_segment(Vector2 point, Vector2 line_start, Vector2 line_end) -
bool _path_crosses_perimeter(Vector3 point1, Vector3 point2) -
bool _line_segments_intersect_robust(Vector2 p1, Vector2 q1, Vector2 p2, Vector2 q2) -
int _orientation(Vector2 p, Vector2 q, Vector2 r) -
bool _point_on_segment_robust(Vector2 p, Vector2 q, Vector2 r) -
Vector3 _find_nearest_waypoint_to_position(Vector3 position) -
Node _find_node_by_name(Node node, String name) -
void _pick_new_direction()
Download