Merge branch 'master' into track-arrays

This commit is contained in:
itsmattkc
2019-12-06 19:42:26 +11:00
41 changed files with 543 additions and 312 deletions
+2 -2
View File
@@ -283,7 +283,7 @@ void NodeInput::set_maximum(const QVariant &max)
has_maximum_ = true;
}
void NodeInput::CopyValues(NodeInput *source, NodeInput *dest, bool include_connections)
void NodeInput::CopyValues(NodeInput *source, NodeInput *dest, bool include_connections, bool lock_connections)
{
Q_ASSERT(source->id() == dest->id());
@@ -295,7 +295,7 @@ void NodeInput::CopyValues(NodeInput *source, NodeInput *dest, bool include_conn
// Copy connections
if (include_connections && source->get_connected_output() != nullptr) {
ConnectEdge(source->get_connected_output(), dest);
ConnectEdge(source->get_connected_output(), dest, lock_connections);
}
// If these inputs are an array, copy the subparams too
+1 -1
View File
@@ -121,7 +121,7 @@ public:
/**
* @brief Copy all values including keyframe information and connections from another NodeInput
*/
static void CopyValues(NodeInput* source, NodeInput* dest, bool include_connections = true);
static void CopyValues(NodeInput* source, NodeInput* dest, bool include_connections = true, bool lock_connections = true);
signals:
void ValueChanged(const rational& start, const rational& end);
+1 -1
View File
@@ -182,7 +182,7 @@ void Node::CopyInputs(Node *source, Node *destination, bool include_connections)
if (src->dependent()) {
NodeInput* dst = static_cast<NodeInput*>(dst_param.at(i));
NodeInput::CopyValues(src, dst, include_connections);
NodeInput::CopyValues(src, dst, include_connections, false);
}
}
}
+9 -5
View File
@@ -103,7 +103,7 @@ void NodeParam::DisconnectAll()
}
}
NodeEdgePtr NodeParam::ConnectEdge(NodeOutput *output, NodeInput *input)
NodeEdgePtr NodeParam::ConnectEdge(NodeOutput *output, NodeInput *input, bool lock)
{
// If the input can only accept one input (the default) and has one already, disconnect it
DisconnectForNewOutput(input);
@@ -127,14 +127,18 @@ NodeEdgePtr NodeParam::ConnectEdge(NodeOutput *output, NodeInput *input)
// that's difficult to diagnose. This makes that issue very clear.
Q_ASSERT(output->parentNode() != input->parentNode());
output->parentNode()->LockUserInput();
input->parentNode()->LockUserInput();
if (lock) {
output->parentNode()->LockUserInput();
input->parentNode()->LockUserInput();
}
output->edges_.append(edge);
input->edges_.append(edge);
output->parentNode()->UnlockUserInput();
input->parentNode()->UnlockUserInput();
if (lock) {
output->parentNode()->UnlockUserInput();
input->parentNode()->UnlockUserInput();
}
// Emit a signal than an edge was added (only one signal needs emitting)
emit input->EdgeAdded(edge);
+1 -1
View File
@@ -292,7 +292,7 @@ public:
*
* This function emits EdgeAdded().
*/
static NodeEdgePtr ConnectEdge(NodeOutput *output, NodeInput *input);
static NodeEdgePtr ConnectEdge(NodeOutput *output, NodeInput *input, bool lock = true);
/**
* @brief Disconnect an edge