Fix: Geometry Nodes Handle Type Selection Fix

Fix the selection logic on the Handle Type Selection node to work
as intended:

(Left is Selected AND Left is ChosenType)
OR
(Right is Selected AND Right is ChosenType)
This commit is contained in:
Johnny Matthews 2021-10-04 12:47:35 -05:00
parent 076d797bda
commit 65b5023df4
1 changed files with 4 additions and 6 deletions

View File

@ -79,12 +79,10 @@ static void select_by_handle_type(const CurveEval &curve,
else {
BezierSpline *b = static_cast<BezierSpline *>(spline.get());
for (int i : IndexRange(b->size())) {
if (mode & GeometryNodeCurveHandleMode::GEO_NODE_CURVE_HANDLE_LEFT) {
r_selection[offset++] = b->handle_types_left()[i] == type;
}
else if (mode & GeometryNodeCurveHandleMode::GEO_NODE_CURVE_HANDLE_RIGHT) {
r_selection[offset++] = b->handle_types_right()[i] == type;
}
r_selection[offset++] = (mode & GeometryNodeCurveHandleMode::GEO_NODE_CURVE_HANDLE_LEFT &&
b->handle_types_left()[i] == type) ||
(mode & GeometryNodeCurveHandleMode::GEO_NODE_CURVE_HANDLE_RIGHT &&
b->handle_types_right()[i] == type);
}
}
}