diff --git a/source/blender/editors/curves/intern/curves_selection.cc b/source/blender/editors/curves/intern/curves_selection.cc index 0cbac83c7ce..67c3bd7ef8e 100644 --- a/source/blender/editors/curves/intern/curves_selection.cc +++ b/source/blender/editors/curves/intern/curves_selection.cc @@ -514,9 +514,9 @@ static std::optional find_closest_point_to_screen_co( const ARegion *region, const RegionView3D *rv3d, const Object &object, - Span deformed_positions, + const Span positions, const IndexMask &points_mask, - float2 mouse_pos, + const float2 mouse_pos, float radius, const FindClosestData &initial_closest) { @@ -531,7 +531,7 @@ static std::optional find_closest_point_to_screen_co( FindClosestData best_match = init; for (const int index : point_indicies_range) { const int point_i = points_mask[index]; - const float3 pos = deformed_positions[point_i]; + const float3 pos = positions[point_i]; /* Find the position of the point in screen space. */ const float2 pos_proj = ED_view3d_project_float_v2_m4(region, pos, projection); @@ -570,9 +570,9 @@ static std::optional find_closest_curve_to_screen_co( const RegionView3D *rv3d, const Object &object, const OffsetIndices points_by_curve, - Span deformed_positions, + const Span positions, const IndexMask &curves_mask, - float2 mouse_pos, + const float2 mouse_pos, float radius, const FindClosestData &initial_closest) { @@ -590,7 +590,7 @@ static std::optional find_closest_curve_to_screen_co( const int curve_i = curves_mask[index]; const IndexRange points = points_by_curve[curve_i]; if (points.size() == 1) { - const float3 pos = deformed_positions[points.first()]; + const float3 pos = positions[points.first()]; /* Find the position of the point in screen space. */ const float2 pos_proj = ED_view3d_project_float_v2_m4(region, pos, projection); @@ -612,8 +612,8 @@ static std::optional find_closest_curve_to_screen_co( } for (const int segment_i : points.drop_back(1)) { - const float3 pos1 = deformed_positions[segment_i]; - const float3 pos2 = deformed_positions[segment_i + 1]; + const float3 pos1 = positions[segment_i]; + const float3 pos2 = positions[segment_i + 1]; const float2 pos1_proj = ED_view3d_project_float_v2_m4(region, pos1, projection); const float2 pos2_proj = ED_view3d_project_float_v2_m4(region, pos2, projection); @@ -653,7 +653,7 @@ std::optional closest_elem_find_screen_space( const ViewContext &vc, const Object &object, const OffsetIndices points_by_curve, - const Span deformed_positions, + const Span positions, const IndexMask &mask, const eAttrDomain domain, const int2 coord, @@ -664,7 +664,7 @@ std::optional closest_elem_find_screen_space( return find_closest_point_to_screen_co(vc.region, vc.rv3d, object, - deformed_positions, + positions, mask, float2(coord), ED_view3d_select_dist_px(), @@ -674,7 +674,7 @@ std::optional closest_elem_find_screen_space( vc.rv3d, object, points_by_curve, - deformed_positions, + positions, mask, float2(coord), ED_view3d_select_dist_px(), @@ -687,7 +687,7 @@ std::optional closest_elem_find_screen_space( bool select_box(const ViewContext &vc, bke::CurvesGeometry &curves, - const Span deformed_positions, + const Span positions, const IndexMask &mask, const eAttrDomain selection_domain, const rcti &rect, @@ -708,7 +708,7 @@ bool select_box(const ViewContext &vc, if (selection_domain == ATTR_DOMAIN_POINT) { mask.foreach_index(GrainSize(1024), [&](const int point_i) { const float2 pos_proj = ED_view3d_project_float_v2_m4( - vc.region, deformed_positions[point_i], projection); + vc.region, positions[point_i], projection); if (BLI_rcti_isect_pt_v(&rect, int2(pos_proj))) { apply_selection_operation_at_index(selection.span, point_i, sel_op); changed = true; @@ -720,7 +720,7 @@ bool select_box(const ViewContext &vc, const IndexRange points = points_by_curve[curve_i]; if (points.size() == 1) { const float2 pos_proj = ED_view3d_project_float_v2_m4( - vc.region, deformed_positions[points.first()], projection); + vc.region, positions[points.first()], projection); if (BLI_rcti_isect_pt_v(&rect, int2(pos_proj))) { apply_selection_operation_at_index(selection.span, curve_i, sel_op); changed = true; @@ -728,8 +728,8 @@ bool select_box(const ViewContext &vc, return; } for (const int segment_i : points.drop_back(1)) { - const float3 pos1 = deformed_positions[segment_i]; - const float3 pos2 = deformed_positions[segment_i + 1]; + const float3 pos1 = positions[segment_i]; + const float3 pos2 = positions[segment_i + 1]; const float2 pos1_proj = ED_view3d_project_float_v2_m4(vc.region, pos1, projection); const float2 pos2_proj = ED_view3d_project_float_v2_m4(vc.region, pos2, projection); @@ -749,7 +749,7 @@ bool select_box(const ViewContext &vc, bool select_lasso(const ViewContext &vc, bke::CurvesGeometry &curves, - const Span deformed_positions, + const Span positions, const IndexMask &mask, const eAttrDomain selection_domain, const Span coords, @@ -774,7 +774,7 @@ bool select_lasso(const ViewContext &vc, if (selection_domain == ATTR_DOMAIN_POINT) { mask.foreach_index(GrainSize(1024), [&](const int point_i) { const float2 pos_proj = ED_view3d_project_float_v2_m4( - vc.region, deformed_positions[point_i], projection); + vc.region, positions[point_i], projection); /* Check the lasso bounding box first as an optimization. */ if (BLI_rcti_isect_pt_v(&bbox, int2(pos_proj)) && BLI_lasso_is_point_inside( @@ -790,7 +790,7 @@ bool select_lasso(const ViewContext &vc, const IndexRange points = points_by_curve[curve_i]; if (points.size() == 1) { const float2 pos_proj = ED_view3d_project_float_v2_m4( - vc.region, deformed_positions[points.first()], projection); + vc.region, positions[points.first()], projection); /* Check the lasso bounding box first as an optimization. */ if (BLI_rcti_isect_pt_v(&bbox, int2(pos_proj)) && BLI_lasso_is_point_inside( @@ -802,8 +802,8 @@ bool select_lasso(const ViewContext &vc, return; } for (const int segment_i : points.drop_back(1)) { - const float3 pos1 = deformed_positions[segment_i]; - const float3 pos2 = deformed_positions[segment_i + 1]; + const float3 pos1 = positions[segment_i]; + const float3 pos2 = positions[segment_i + 1]; const float2 pos1_proj = ED_view3d_project_float_v2_m4(vc.region, pos1, projection); const float2 pos2_proj = ED_view3d_project_float_v2_m4(vc.region, pos2, projection); @@ -832,7 +832,7 @@ bool select_lasso(const ViewContext &vc, bool select_circle(const ViewContext &vc, bke::CurvesGeometry &curves, - const Span deformed_positions, + const Span positions, const IndexMask &mask, const eAttrDomain selection_domain, const int2 coord, @@ -855,7 +855,7 @@ bool select_circle(const ViewContext &vc, if (selection_domain == ATTR_DOMAIN_POINT) { mask.foreach_index(GrainSize(1024), [&](const int point_i) { const float2 pos_proj = ED_view3d_project_float_v2_m4( - vc.region, deformed_positions[point_i], projection); + vc.region, positions[point_i], projection); if (math::distance_squared(pos_proj, float2(coord)) <= radius_sq) { apply_selection_operation_at_index(selection.span, point_i, sel_op); changed = true; @@ -867,7 +867,7 @@ bool select_circle(const ViewContext &vc, const IndexRange points = points_by_curve[curve_i]; if (points.size() == 1) { const float2 pos_proj = ED_view3d_project_float_v2_m4( - vc.region, deformed_positions[points.first()], projection); + vc.region, positions[points.first()], projection); if (math::distance_squared(pos_proj, float2(coord)) <= radius_sq) { apply_selection_operation_at_index(selection.span, curve_i, sel_op); changed = true; @@ -875,8 +875,8 @@ bool select_circle(const ViewContext &vc, return; } for (const int segment_i : points.drop_back(1)) { - const float3 pos1 = deformed_positions[segment_i]; - const float3 pos2 = deformed_positions[segment_i + 1]; + const float3 pos1 = positions[segment_i]; + const float3 pos2 = positions[segment_i + 1]; const float2 pos1_proj = ED_view3d_project_float_v2_m4(vc.region, pos1, projection); const float2 pos2_proj = ED_view3d_project_float_v2_m4(vc.region, pos2, projection); diff --git a/source/blender/editors/include/ED_curves.hh b/source/blender/editors/include/ED_curves.hh index 32af5a26d2d..9c854b1c0cb 100644 --- a/source/blender/editors/include/ED_curves.hh +++ b/source/blender/editors/include/ED_curves.hh @@ -231,15 +231,14 @@ struct FindClosestData { * * \return A new point or curve closer than the \a initial input, if one exists. */ -std::optional closest_elem_find_screen_space( - const ViewContext &vc, - const Object &object, - const OffsetIndices points_by_curve, - Span deformed_positions, - const IndexMask &mask, - eAttrDomain domain, - int2 coord, - const FindClosestData &initial); +std::optional closest_elem_find_screen_space(const ViewContext &vc, + const Object &object, + OffsetIndices points_by_curve, + Span deformed_positions, + const IndexMask &mask, + eAttrDomain domain, + int2 coord, + const FindClosestData &initial); /** * Select points or curves in a (screen-space) rectangle.