nodes are given a time range

This commit is contained in:
itsmattkc
2019-10-22 14:58:06 +11:00
parent 9da5e7c9be
commit 5f86b9b9c7
32 changed files with 110 additions and 77 deletions
+12 -2
View File
@@ -38,6 +38,10 @@ Block::Block() :
texture_output_->set_data_type(NodeParam::kTexture);
AddParameter(texture_output_);
samples_output_ = new NodeOutput("samples_out");
samples_output_->set_data_type(NodeParam::kSamples);
AddParameter(samples_output_);
connect(this, SIGNAL(EdgeAdded(NodeEdgePtr)), this, SLOT(EdgeAddedSlot(NodeEdgePtr)), Qt::DirectConnection);
connect(this, SIGNAL(EdgeRemoved(NodeEdgePtr)), this, SLOT(EdgeRemovedSlot(NodeEdgePtr)), Qt::DirectConnection);
}
@@ -99,9 +103,10 @@ NodeInput *Block::previous_input()
return previous_input_;
}
QVariant Block::Value(NodeOutput *output, const rational &time)
QVariant Block::Value(NodeOutput *output, const rational &in, const rational &out)
{
Q_UNUSED(time)
Q_UNUSED(in)
Q_UNUSED(out)
if (output == block_output_) {
// Simply set the output value to a pointer to this Block
@@ -158,6 +163,11 @@ NodeOutput *Block::texture_output()
return texture_output_;
}
NodeOutput *Block::samples_output()
{
return samples_output_;
}
NodeOutput *Block::block_output()
{
return block_output_;
+3 -1
View File
@@ -60,6 +60,7 @@ public:
NodeInput* previous_input();
NodeOutput* texture_output();
NodeOutput* samples_output();
NodeOutput* block_output();
static void ConnectBlocks(Block* previous, Block* next);
@@ -103,7 +104,7 @@ signals:
void Refreshed();
protected:
virtual QVariant Value(NodeOutput* output, const rational& time) override;
virtual QVariant Value(NodeOutput* output, const rational &in, const rational &out) override;
rational SequenceToMediaTime(const rational& sequence_time);
@@ -116,6 +117,7 @@ private:
NodeOutput* block_output_;
NodeOutput* texture_output_;
NodeOutput* samples_output_;
rational in_point_;
rational out_point_;
+5 -7
View File
@@ -61,21 +61,19 @@ NodeInput *ClipBlock::texture_input()
return texture_input_;
}
QVariant ClipBlock::Value(NodeOutput* param, const rational& time)
QVariant ClipBlock::Value(NodeOutput* param, const rational& v_in, const rational &v_out)
{
if (param == texture_output()) {
// If the time retrieved is within this block, get texture information
if (texture_input()->IsConnected() && time >= in() && time < out()) {
// We convert the time given (timeline time) to media time
rational media_time = SequenceToMediaTime(time);
if (texture_input()->IsConnected() && v_in >= in() && v_out < out()) {
// Retrieve texture
return texture_input_->get_value(media_time);
// We convert the time given (timeline time) to media time
return texture_input_->get_value(SequenceToMediaTime(v_in), SequenceToMediaTime(v_out));
}
return 0;
}
return Block::Value(param, time);
return Block::Value(param, v_in, v_out);
}
void ClipBlock::InvalidateCache(const rational &start_range, const rational &end_range, NodeInput *from)
+1 -1
View File
@@ -47,7 +47,7 @@ public:
virtual QList<NodeDependency> RunDependencies(NodeOutput *output, const rational &time) override;
protected:
virtual QVariant Value(NodeOutput* output, const rational& time) override;
virtual QVariant Value(NodeOutput* output, const rational &v_in, const rational &v_out) override;
private:
NodeInput* texture_input_;