automatically store block connections in the transitionblock class
Convenience code that automatically returns valid blocks if they're connected.
This commit is contained in:
@@ -6,10 +6,14 @@ TransitionBlock::TransitionBlock() :
|
||||
{
|
||||
out_block_input_ = new NodeInput("out_block_in", NodeParam::kBuffer);
|
||||
out_block_input_->set_is_keyframable(false);
|
||||
connect(out_block_input_, &NodeParam::EdgeAdded, this, &TransitionBlock::BlockConnected);
|
||||
connect(out_block_input_, &NodeParam::EdgeRemoved, this, &TransitionBlock::BlockDisconnected);
|
||||
AddInput(out_block_input_);
|
||||
|
||||
in_block_input_ = new NodeInput("in_block_in", NodeParam::kBuffer);
|
||||
in_block_input_->set_is_keyframable(false);
|
||||
connect(in_block_input_, &NodeParam::EdgeAdded, this, &TransitionBlock::BlockConnected);
|
||||
connect(in_block_input_, &NodeParam::EdgeRemoved, this, &TransitionBlock::BlockDisconnected);
|
||||
AddInput(in_block_input_);
|
||||
}
|
||||
|
||||
@@ -43,3 +47,27 @@ rational TransitionBlock::out_offset() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void TransitionBlock::BlockConnected(NodeEdgePtr edge)
|
||||
{
|
||||
if (!edge->output()->parentNode()->IsBlock()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Block* block = static_cast<Block*>(edge->output()->parentNode());
|
||||
|
||||
if (edge->input() == out_block_input_) {
|
||||
connected_out_block_ = block;
|
||||
} else {
|
||||
connected_in_block_ = block;
|
||||
}
|
||||
}
|
||||
|
||||
void TransitionBlock::BlockDisconnected(NodeEdgePtr edge)
|
||||
{
|
||||
if (edge->input() == out_block_input_) {
|
||||
connected_out_block_ = nullptr;
|
||||
} else {
|
||||
connected_in_block_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ public:
|
||||
rational in_offset() const;
|
||||
rational out_offset() const;
|
||||
|
||||
Block* connected_out_block() const;
|
||||
Block* connected_in_block() const;
|
||||
|
||||
private:
|
||||
NodeInput* out_block_input_;
|
||||
|
||||
@@ -27,6 +30,11 @@ private:
|
||||
|
||||
Block* connected_in_block_;
|
||||
|
||||
private slots:
|
||||
void BlockConnected(NodeEdgePtr edge);
|
||||
|
||||
void BlockDisconnected(NodeEdgePtr edge);
|
||||
|
||||
};
|
||||
|
||||
#endif // TRANSITIONBLOCK_H
|
||||
|
||||
Reference in New Issue
Block a user