diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index 6238447c2c..a42fae5677 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -115,6 +115,19 @@ struct OverhangAttributes { float proximity_to_curled_lines; //value between 0 and 1 }; +inline bool operator==(const OverhangAttributes &lhs, const OverhangAttributes &rhs) { + if (std::abs(lhs.start_distance_from_prev_layer - rhs.start_distance_from_prev_layer) > std::numeric_limits::epsilon()) { + return false; + } + if (std::abs(lhs.end_distance_from_prev_layer - rhs.end_distance_from_prev_layer) > std::numeric_limits::epsilon()) { + return false; + } + if (std::abs(lhs.proximity_to_curled_lines - rhs.proximity_to_curled_lines) > std::numeric_limits::epsilon()) { + return false; + } + return true; +} + struct ExtrusionAttributes : ExtrusionFlow { ExtrusionAttributes() = default; @@ -132,7 +145,7 @@ struct ExtrusionAttributes : ExtrusionFlow inline bool operator==(const ExtrusionAttributes &lhs, const ExtrusionAttributes &rhs) { return static_cast(lhs) == static_cast(rhs) && - lhs.role == rhs.role; + lhs.role == rhs.role && lhs.overhang_attributes == rhs.overhang_attributes; } class ExtrusionPath : public ExtrusionEntity