Thu, 19 Mar 2020 21:06:06 +0200
PolygonObjectEditor can now modify the object properly
#include "conditionaledge.h" ldraw::ConditionalEdge::ConditionalEdge( const glm::vec3& point_1, const glm::vec3& point_2, const glm::vec3& controlPoint_1, const glm::vec3& controlPoint_2, const Color color_index) : Edge{point_1, point_2, color_index}, controlPoint_1{controlPoint_1}, controlPoint_2{controlPoint_2} { } ldraw::ConditionalEdge::ConditionalEdge(const std::array<glm::vec3, 4>& vertices, const Color color) : Edge{vertices[0], vertices[1], color}, controlPoint_1{vertices[2]}, controlPoint_2{vertices[3]} { } QVariant ldraw::ConditionalEdge::getProperty(Property property) const { switch (property) { case Property::ControlPoint0: return QVariant::fromValue(controlPoint_1); case Property::ControlPoint1: return QVariant::fromValue(controlPoint_2); default: return Edge::getProperty(property); } } void ldraw::ConditionalEdge::setProperty(SetPropertyResult* result, const PropertyKeyValue& pair) { LDRAW_OBJECT_HANDLE_SET_PROPERTY(ControlPoint0, {this->controlPoint_1 = value;}) LDRAW_OBJECT_HANDLE_SET_PROPERTY(ControlPoint1, {this->controlPoint_2 = value;}) BaseClass::setProperty(result, pair); } QString ldraw::ConditionalEdge::textRepresentation() const { return Edge::textRepresentation() + utility::format("%1 %2", utility::vertexToStringParens(controlPoint_1), utility::vertexToStringParens(controlPoint_2)); } int ldraw::ConditionalEdge::numPoints() const { return 4; } const glm::vec3& ldraw::ConditionalEdge::getPoint(int index) const { switch(index) { case 3: return this->controlPoint_1; case 4: return this->controlPoint_2; default: return ldraw::Edge::getPoint(index); } }