Fix T81651, exact boolean modifier incorrect if operand hidden.

The code was trying to ignore hidden geometry when doing boolean,
which is correct when used as a tool, but not when a modifier.
Added a "keep_hidden" argument to bmesh_boolean to distinguish the
two cases.
Also fixed a bug when the tool is used with hidden geometry that
is attached to unhidden geometry that is deleted by the operation.
This commit is contained in:
2020-11-08 08:39:01 -05:00
parent 7be47dadea
commit 39012146e1
6 changed files with 49 additions and 16 deletions

View File

@@ -428,7 +428,9 @@ class Cell {
BoolOpType bool_optype)
{
std::copy(from_cell.winding().begin(), from_cell.winding().end(), winding_.begin());
winding_[shape] += delta;
if (shape >= 0) {
winding_[shape] += delta;
}
winding_assigned_ = true;
in_output_volume_ = apply_bool_op(bool_optype, winding_);
}