node: fixed bug that failed to load some default values from shader xml
This commit is contained in:
+50
-27
@@ -37,38 +37,27 @@
|
|||||||
|
|
||||||
OLIVE_NAMESPACE_ENTER
|
OLIVE_NAMESPACE_ENTER
|
||||||
|
|
||||||
NodeInput::NodeInput(const QString& id, const DataType &type, const QVariant &default_value) :
|
NodeInput::NodeInput(const QString& id, const DataType &type, const QVector<QVariant> &default_value) :
|
||||||
NodeParam(id),
|
NodeParam(id)
|
||||||
data_type_(type),
|
|
||||||
keyframable_(true),
|
|
||||||
keyframing_(false)
|
|
||||||
{
|
{
|
||||||
int track_size;
|
Init(type);
|
||||||
|
|
||||||
switch (data_type_) {
|
if (!default_value.isEmpty()) {
|
||||||
case kVec2:
|
SetDefaultValue(default_value);
|
||||||
track_size = 2;
|
|
||||||
break;
|
|
||||||
case kVec3:
|
|
||||||
track_size = 3;
|
|
||||||
break;
|
|
||||||
case kVec4:
|
|
||||||
case kColor:
|
|
||||||
track_size = 4;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
track_size = 1;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
keyframe_tracks_.resize(track_size);
|
NodeInput::NodeInput(const QString &id, const NodeParam::DataType &type, const QVariant &default_value) :
|
||||||
|
NodeParam(id)
|
||||||
|
{
|
||||||
|
Init(type);
|
||||||
|
SetDefaultValue(split_normal_value_into_track_values(default_value));
|
||||||
|
}
|
||||||
|
|
||||||
if (!default_value.isNull()) {
|
NodeInput::NodeInput(const QString &id, const NodeParam::DataType &type) :
|
||||||
standard_value_ = split_normal_value_into_track_values(default_value);
|
NodeParam(id)
|
||||||
|
{
|
||||||
Q_ASSERT(standard_value_.size() == track_size);
|
Init(type);
|
||||||
} else {
|
|
||||||
standard_value_.resize(track_size);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NodeInput::IsArray()
|
bool NodeInput::IsArray()
|
||||||
@@ -299,6 +288,40 @@ void NodeInput::SaveInternal(QXmlStreamWriter*) const
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NodeInput::Init(DataType type)
|
||||||
|
{
|
||||||
|
keyframable_ = true;
|
||||||
|
keyframing_ = false;
|
||||||
|
data_type_ = type;
|
||||||
|
|
||||||
|
int track_size;
|
||||||
|
|
||||||
|
switch (data_type_) {
|
||||||
|
case kVec2:
|
||||||
|
track_size = 2;
|
||||||
|
break;
|
||||||
|
case kVec3:
|
||||||
|
track_size = 3;
|
||||||
|
break;
|
||||||
|
case kVec4:
|
||||||
|
case kColor:
|
||||||
|
track_size = 4;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
track_size = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
keyframe_tracks_.resize(track_size);
|
||||||
|
standard_value_.resize(track_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NodeInput::SetDefaultValue(const QVector<QVariant> &default_value)
|
||||||
|
{
|
||||||
|
for (int i=0;i<standard_value_.size();i++) {
|
||||||
|
standard_value_.replace(i, default_value.at(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QString NodeInput::ValueToString(const QVariant &value) const
|
QString NodeInput::ValueToString(const QVariant &value) const
|
||||||
{
|
{
|
||||||
return ValueToString(data_type_, value);
|
return ValueToString(data_type_, value);
|
||||||
|
|||||||
+7
-1
@@ -45,7 +45,9 @@ public:
|
|||||||
* saving/loading data from this Node so that parameter order can be changed without issues loading data saved by an
|
* saving/loading data from this Node so that parameter order can be changed without issues loading data saved by an
|
||||||
* older version. This of course assumes that parameters don't change their ID.
|
* older version. This of course assumes that parameters don't change their ID.
|
||||||
*/
|
*/
|
||||||
NodeInput(const QString &id, const DataType& type, const QVariant& default_value = QVariant());
|
NodeInput(const QString &id, const DataType& type, const QVector<QVariant>& default_value);
|
||||||
|
NodeInput(const QString &id, const DataType& type, const QVariant& default_value);
|
||||||
|
NodeInput(const QString &id, const DataType& type);
|
||||||
|
|
||||||
virtual bool IsArray();
|
virtual bool IsArray();
|
||||||
|
|
||||||
@@ -285,6 +287,10 @@ protected:
|
|||||||
virtual void SaveInternal(QXmlStreamWriter* writer) const;
|
virtual void SaveInternal(QXmlStreamWriter* writer) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void Init(NodeParam::DataType type);
|
||||||
|
|
||||||
|
void SetDefaultValue(const QVector<QVariant> &default_value);
|
||||||
|
|
||||||
QString ValueToString(const QVariant& value) const;
|
QString ValueToString(const QVariant& value) const;
|
||||||
|
|
||||||
QVariant StringToValue(const QString &string, QList<XMLNodeData::FootageConnection> &footage_connections);
|
QVariant StringToValue(const QString &string, QList<XMLNodeData::FootageConnection> &footage_connections);
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ void NodeMetaReader::XMLReadParam(QXmlStreamReader *reader)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant default_val;
|
QVector<QVariant> default_val;
|
||||||
QHash<QString, QVariant> properties;
|
QHash<QString, QVariant> properties;
|
||||||
LanguageMap param_names;
|
LanguageMap param_names;
|
||||||
QList<LanguageMap> combo_names;
|
QList<LanguageMap> combo_names;
|
||||||
@@ -249,7 +249,13 @@ void NodeMetaReader::XMLReadParam(QXmlStreamReader *reader)
|
|||||||
} else if (reader->name() == QStringLiteral("default")) {
|
} else if (reader->name() == QStringLiteral("default")) {
|
||||||
|
|
||||||
// Reads the default value
|
// Reads the default value
|
||||||
default_val = NodeInput::StringToValue(param_type, reader->readElementText());
|
while (XMLReadNextStartElement(reader)) {
|
||||||
|
if (reader->name() == QStringLiteral("value")) {
|
||||||
|
default_val.append(NodeInput::StringToValue(param_type, reader->readElementText()));
|
||||||
|
} else {
|
||||||
|
reader->skipCurrentElement();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else if (reader->name() == QStringLiteral("option")) {
|
} else if (reader->name() == QStringLiteral("option")) {
|
||||||
|
|
||||||
|
|||||||
+12
-4
@@ -33,25 +33,33 @@
|
|||||||
<param id="radius_in" type="float">
|
<param id="radius_in" type="float">
|
||||||
<name lang="en_US">Radius</name>
|
<name lang="en_US">Radius</name>
|
||||||
<min>0</min>
|
<min>0</min>
|
||||||
<default>10</default>
|
<default>
|
||||||
|
<value>10</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Parameter: Horizontal Enable -->
|
<!-- Parameter: Horizontal Enable -->
|
||||||
<param id="horiz_in" type="bool">
|
<param id="horiz_in" type="bool">
|
||||||
<name lang="en_US">Horizontal</name>
|
<name lang="en_US">Horizontal</name>
|
||||||
<default>1</default>
|
<default>
|
||||||
|
<value>1</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Parameter: Vertical Enable -->
|
<!-- Parameter: Vertical Enable -->
|
||||||
<param id="vert_in" type="bool">
|
<param id="vert_in" type="bool">
|
||||||
<name lang="en_US">Vertical</name>
|
<name lang="en_US">Vertical</name>
|
||||||
<default>1</default>
|
<default>
|
||||||
|
<value>1</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Parameter: Repeat Edge Pixels -->
|
<!-- Parameter: Repeat Edge Pixels -->
|
||||||
<param id="repeat_edge_pixels_in" type="bool">
|
<param id="repeat_edge_pixels_in" type="bool">
|
||||||
<name lang="en_US">Repeat Edge Pixels</name>
|
<name lang="en_US">Repeat Edge Pixels</name>
|
||||||
<default>0</default>
|
<default>
|
||||||
|
<value>0</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Qt Resource path to fragment shader -->
|
<!-- Qt Resource path to fragment shader -->
|
||||||
|
|||||||
@@ -27,14 +27,18 @@
|
|||||||
<param id="softness_in" type="float">
|
<param id="softness_in" type="float">
|
||||||
<name lang="en_US">Softness</name>
|
<name lang="en_US">Softness</name>
|
||||||
<min>0</min>
|
<min>0</min>
|
||||||
<default>10</default>
|
<default>
|
||||||
|
<value>10</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Parameter: Opacity Input -->
|
<!-- Parameter: Opacity Input -->
|
||||||
<param id="opacity_in" type="float">
|
<param id="opacity_in" type="float">
|
||||||
<name lang="en_US">Opacity</name>
|
<name lang="en_US">Opacity</name>
|
||||||
<min>0</min>
|
<min>0</min>
|
||||||
<default>80</default>
|
<default>
|
||||||
|
<value>80</value>
|
||||||
|
</default>
|
||||||
<max>100</max>
|
<max>100</max>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
@@ -42,13 +46,17 @@
|
|||||||
<param id="distance_in" type="float">
|
<param id="distance_in" type="float">
|
||||||
<name lang="en_US">Distance</name>
|
<name lang="en_US">Distance</name>
|
||||||
<min>0</min>
|
<min>0</min>
|
||||||
<default>10</default>
|
<default>
|
||||||
|
<value>10</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Parameter: Direction Input -->
|
<!-- Parameter: Direction Input -->
|
||||||
<param id="direction_in" type="float">
|
<param id="direction_in" type="float">
|
||||||
<name lang="en_US">Direction</name>
|
<name lang="en_US">Direction</name>
|
||||||
<default>45</default>
|
<default>
|
||||||
|
<value>45</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Qt Resource path to fragment shader -->
|
<!-- Qt Resource path to fragment shader -->
|
||||||
|
|||||||
@@ -18,7 +18,12 @@
|
|||||||
<param id="color_in" type="color">
|
<param id="color_in" type="color">
|
||||||
<name lang="en_US">Color</name>
|
<name lang="en_US">Color</name>
|
||||||
<name lang="en_GB">Colour</name>
|
<name lang="en_GB">Colour</name>
|
||||||
<default>1.0:0.0:0.0:1.0</default>
|
<default>
|
||||||
|
<value>1.0</value>
|
||||||
|
<value>0.0</value>
|
||||||
|
<value>0.0</value>
|
||||||
|
<value>1.0</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Qt Resource path to fragment shader -->
|
<!-- Qt Resource path to fragment shader -->
|
||||||
|
|||||||
@@ -27,21 +27,27 @@
|
|||||||
<param id="radius_in" type="float">
|
<param id="radius_in" type="float">
|
||||||
<name lang="en_US">Radius</name>
|
<name lang="en_US">Radius</name>
|
||||||
<min>0</min>
|
<min>0</min>
|
||||||
<default>10</default>
|
<default>
|
||||||
|
<value>10</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Parameter: Opacity Value -->
|
<!-- Parameter: Opacity Value -->
|
||||||
<param id="opacity_in" type="float">
|
<param id="opacity_in" type="float">
|
||||||
<name lang="en_US">Opacity</name>
|
<name lang="en_US">Opacity</name>
|
||||||
<min>0</min>
|
<min>0</min>
|
||||||
<default>100</default>
|
<default>
|
||||||
|
<value>100</value>
|
||||||
|
</default>
|
||||||
<max>100</max>
|
<max>100</max>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Parameter: Inner Value -->
|
<!-- Parameter: Inner Value -->
|
||||||
<param id="inner_in" type="bool">
|
<param id="inner_in" type="bool">
|
||||||
<name lang="en_US">Inner</name>
|
<name lang="en_US">Inner</name>
|
||||||
<default>false</default>
|
<default>
|
||||||
|
<value>false</value>
|
||||||
|
</default>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
<!-- Qt Resource path to fragment shader -->
|
<!-- Qt Resource path to fragment shader -->
|
||||||
|
|||||||
Reference in New Issue
Block a user