@@ -920,40 +920,16 @@ LocalVector<uint32_t> NavMeshQueries3D::get_simplified_path_indices(const LocalV
920
920
p_epsilon = MAX (0.0 , p_epsilon);
921
921
real_t squared_epsilon = p_epsilon * p_epsilon;
922
922
923
- LocalVector<bool > valid_points;
924
- valid_points.resize (p_path.size ());
925
- for (uint32_t i = 0 ; i < valid_points.size (); i++) {
926
- valid_points[i] = false ;
927
- }
928
-
929
- simplify_path_segment (0 , p_path.size () - 1 , p_path, squared_epsilon, valid_points);
930
-
931
- int valid_point_index = 0 ;
932
-
933
- for (bool valid : valid_points) {
934
- if (valid) {
935
- valid_point_index += 1 ;
936
- }
937
- }
938
-
939
923
LocalVector<uint32_t > simplified_path_indices;
940
- simplified_path_indices.resize (valid_point_index);
941
- valid_point_index = 0 ;
942
-
943
- for (uint32_t i = 0 ; i < valid_points.size (); i++) {
944
- if (valid_points[i]) {
945
- simplified_path_indices[valid_point_index] = i;
946
- valid_point_index += 1 ;
947
- }
948
- }
924
+ simplified_path_indices.reserve (p_path.size ());
925
+ simplified_path_indices.push_back (0 );
926
+ simplify_path_segment (0 , p_path.size () - 1 , p_path, squared_epsilon, simplified_path_indices);
927
+ simplified_path_indices.push_back (p_path.size () - 1 );
949
928
950
929
return simplified_path_indices;
951
930
}
952
931
953
- void NavMeshQueries3D::simplify_path_segment (int p_start_inx, int p_end_inx, const LocalVector<Vector3> &p_points, real_t p_epsilon, LocalVector<bool > &r_valid_points) {
954
- r_valid_points[p_start_inx] = true ;
955
- r_valid_points[p_end_inx] = true ;
956
-
932
+ void NavMeshQueries3D::simplify_path_segment (int p_start_inx, int p_end_inx, const LocalVector<Vector3> &p_points, real_t p_epsilon, LocalVector<uint32_t > &r_simplified_path_indices) {
957
933
Vector3 path_segment[2 ] = { p_points[p_start_inx], p_points[p_end_inx] };
958
934
959
935
real_t point_max_distance = 0.0 ;
@@ -972,8 +948,9 @@ void NavMeshQueries3D::simplify_path_segment(int p_start_inx, int p_end_inx, con
972
948
}
973
949
974
950
if (point_max_distance > p_epsilon) {
975
- simplify_path_segment (p_start_inx, point_max_index, p_points, p_epsilon, r_valid_points);
976
- simplify_path_segment (point_max_index, p_end_inx, p_points, p_epsilon, r_valid_points);
951
+ simplify_path_segment (p_start_inx, point_max_index, p_points, p_epsilon, r_simplified_path_indices);
952
+ r_simplified_path_indices.push_back (point_max_index);
953
+ simplify_path_segment (point_max_index, p_end_inx, p_points, p_epsilon, r_simplified_path_indices);
977
954
}
978
955
}
979
956
0 commit comments