mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-19 06:41:14 -06:00
Merge some BS1.7 changes:
internal_solid_infill_pattern
This commit is contained in:
parent
7ece35931e
commit
bcbbbf35db
95 changed files with 44122 additions and 693 deletions
|
@ -108,6 +108,21 @@ template<class IndexT> struct ItsNeighborsWrapper
|
|||
const auto& get_index() const noexcept { return index_ref; }
|
||||
};
|
||||
|
||||
// Can be used as the second argument to its_split to apply a functor on each
|
||||
// part, instead of collecting them into a container.
|
||||
template<class Fn>
|
||||
struct SplitOutputFn {
|
||||
|
||||
Fn fn;
|
||||
|
||||
SplitOutputFn(Fn f): fn{std::move(f)} {}
|
||||
|
||||
SplitOutputFn &operator *() { return *this; }
|
||||
void operator=(indexed_triangle_set &&its) { fn(std::move(its)); }
|
||||
void operator=(indexed_triangle_set &its) { fn(its); }
|
||||
SplitOutputFn& operator++() { return *this; };
|
||||
};
|
||||
|
||||
// Splits a mesh into multiple meshes when possible.
|
||||
template<class Its, class OutputIt>
|
||||
void its_split(const Its &m, OutputIt out_it)
|
||||
|
@ -155,7 +170,8 @@ void its_split(const Its &m, OutputIt out_it)
|
|||
mesh.indices.emplace_back(new_face);
|
||||
}
|
||||
|
||||
out_it = std::move(mesh);
|
||||
*out_it = std::move(mesh);
|
||||
++out_it;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue