nodes are given a time range
This commit is contained in:
@@ -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_;
|
||||
|
||||
@@ -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_;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user