diff --git a/app/node/input.cpp b/app/node/input.cpp index ecc4906d8..2c5a9d3eb 100644 --- a/app/node/input.cpp +++ b/app/node/input.cpp @@ -381,23 +381,38 @@ QString NodeInput::ValueToString(const DataType& data_type, const QVariant &valu } } +void NodeInput::ValidateVectorString(QStringList* list, int count) +{ + while (list->size() < count) { + list->append(QStringLiteral("0")); + } +} + QVariant NodeInput::StringToValue(const DataType& data_type, const QString &string, bool value_is_a_key_track) { if (!value_is_a_key_track && data_type == kVec2) { QStringList vals = string.split(':'); + ValidateVectorString(&vals, 2); + return QVector2D(vals.at(0).toFloat(), vals.at(1).toFloat()); } else if (!value_is_a_key_track && data_type == kVec3) { QStringList vals = string.split(':'); + ValidateVectorString(&vals, 3); + return QVector3D(vals.at(0).toFloat(), vals.at(1).toFloat(), vals.at(2).toFloat()); } else if (!value_is_a_key_track && data_type == kVec4) { QStringList vals = string.split(':'); + ValidateVectorString(&vals, 4); + return QVector4D(vals.at(0).toFloat(), vals.at(1).toFloat(), vals.at(2).toFloat(), vals.at(3).toFloat()); } else if (!value_is_a_key_track && data_type == kColor) { QStringList vals = string.split(':'); + ValidateVectorString(&vals, 4); + return QVariant::fromValue(Color(vals.at(0).toFloat(), vals.at(1).toFloat(), vals.at(2).toFloat(), vals.at(3).toFloat())); } else if (data_type == kInt) { return QVariant::fromValue(string.toLongLong()); diff --git a/app/node/input.h b/app/node/input.h index 10d09e2a5..2a81c6d40 100644 --- a/app/node/input.h +++ b/app/node/input.h @@ -321,6 +321,8 @@ private: void SaveConnections(QXmlStreamWriter* writer) const; + static void ValidateVectorString(QStringList* list, int count); + /** * @brief Returns whether a data type can be interpolated or not */