--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/inputvertices.cpp Sun Jul 03 20:18:34 2022 +0300 @@ -0,0 +1,43 @@ +#include "src/inputvertices.h" + +bool InputVertices::currentPointOnExistingPoint() const +{ + const glm::vec3& pos = this->polygon.back(); + return std::any_of( + this->polygon.begin(), + this->polygon.end() - 1, + [&pos](const glm::vec3& p){return isclose(pos, p);}); +} + +std::size_t InputVertices::calcNumPoints() const +{ + std::size_t result = this->polygon.size(); + if (this->currentPointOnExistingPoint()) { + result -= 1; + } + return result; +} + +void InputVertices::updateCurrentPoint(const glm::vec3& p) +{ + this->polygon.back() = p; + this->numpoints = this->calcNumPoints(); +} + +void InputVertices::removeLastPoint() +{ + if (this->polygon.size() > 1) { + this->polygon.erase(this->polygon.end() - 2); + this->numpoints = this->calcNumPoints(); + } +} + +void InputVertices::finishCurrentPoint() +{ + this->polygon.push_back(this->polygon.back()); +} + +void InputVertices::clear() +{ + *this = {}; +}