Small MMU segmentation optimization
This commit is contained in:
parent
cc913d52ef
commit
8d325008d1
1 changed files with 3 additions and 6 deletions
|
@ -79,9 +79,9 @@ struct PaintedLine
|
||||||
|
|
||||||
struct PaintedLineVisitor
|
struct PaintedLineVisitor
|
||||||
{
|
{
|
||||||
PaintedLineVisitor(const EdgeGrid::Grid &grid, std::vector<PaintedLine> &painted_lines) : grid(grid), painted_lines(painted_lines)
|
PaintedLineVisitor(const EdgeGrid::Grid &grid, std::vector<PaintedLine> &painted_lines, size_t reserve) : grid(grid), painted_lines(painted_lines)
|
||||||
{
|
{
|
||||||
painted_lines_set.reserve(painted_lines.capacity());
|
painted_lines_set.reserve(reserve);
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset() { painted_lines_set.clear(); }
|
void reset() { painted_lines_set.clear(); }
|
||||||
|
@ -1490,15 +1490,12 @@ std::vector<std::vector<std::pair<ExPolygon, size_t>>> multi_material_segmentati
|
||||||
line_start -= print_object.center_offset();
|
line_start -= print_object.center_offset();
|
||||||
line_end -= print_object.center_offset();
|
line_end -= print_object.center_offset();
|
||||||
|
|
||||||
std::vector<PaintedLine> painted_line_tmp;
|
PaintedLineVisitor visitor(edge_grids[layer_idx], painted_lines[layer_idx], 16);
|
||||||
PaintedLineVisitor visitor(edge_grids[layer_idx], painted_line_tmp);
|
|
||||||
visitor.reset();
|
visitor.reset();
|
||||||
visitor.line_to_test.a = line_start;
|
visitor.line_to_test.a = line_start;
|
||||||
visitor.line_to_test.b = line_end;
|
visitor.line_to_test.b = line_end;
|
||||||
visitor.color = int(extruder_idx);
|
visitor.color = int(extruder_idx);
|
||||||
edge_grids[layer_idx].visit_cells_intersecting_line(line_start, line_end, visitor);
|
edge_grids[layer_idx].visit_cells_intersecting_line(line_start, line_end, visitor);
|
||||||
|
|
||||||
append(painted_lines[layer_idx], std::move(painted_line_tmp));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue