implemented external xml/shader loading for transitions as well as regular nodes

Transitions are nodes but have a few parameters that are programmatic and always
required. This lets people write external code for transitions as well.
This commit is contained in:
itsmattkc
2019-12-17 15:44:13 +11:00
parent a0b6bb842d
commit 6a4dcc673a
9 changed files with 477 additions and 259 deletions
+2
View File
@@ -19,6 +19,8 @@ add_subdirectory(diptoblack)
set(OLIVE_SOURCES
${OLIVE_SOURCES}
node/block/transition/externaltransition.h
node/block/transition/externaltransition.cpp
node/block/transition/transition.h
node/block/transition/transition.cpp
PARENT_SCOPE
@@ -0,0 +1,64 @@
#include "externaltransition.h"
ExternalTransition::ExternalTransition(const QString &xml_meta_filename) :
meta_(xml_meta_filename)
{
foreach (NodeInput* input, meta_.inputs()) {
AddInput(input);
}
}
Node *ExternalTransition::copy() const
{
return new ExternalTransition(meta_.filename());
}
QString ExternalTransition::Name() const
{
return meta_.Name();
}
QString ExternalTransition::id() const
{
return meta_.id();
}
QString ExternalTransition::Category() const
{
return meta_.Category();
}
QString ExternalTransition::Description() const
{
return meta_.Description();
}
void ExternalTransition::Retranslate()
{
meta_.Retranslate();
}
bool ExternalTransition::IsAccelerated() const
{
return true;
}
QString ExternalTransition::AcceleratedCodeVertex() const
{
return meta_.vert_code();
}
QString ExternalTransition::AcceleratedCodeFragment() const
{
return meta_.frag_code();
}
int ExternalTransition::AcceleratedCodeIterations() const
{
return meta_.iterations();
}
NodeInput *ExternalTransition::AcceleratedCodeIterativeInput() const
{
return meta_.iteration_input();
}
@@ -0,0 +1,32 @@
#ifndef EXTERNALTRANSITION_H
#define EXTERNALTRANSITION_H
#include "transition.h"
#include "node/metareader.h"
class ExternalTransition : public TransitionBlock
{
public:
ExternalTransition(const QString& xml_meta_filename);
virtual Node* copy() const override;
virtual QString Name() const override;
virtual QString id() const override;
virtual QString Category() const override;
virtual QString Description() const override;
virtual void Retranslate() override;
virtual bool IsAccelerated() const override;
virtual QString AcceleratedCodeVertex() const override;
virtual QString AcceleratedCodeFragment() const override;
virtual int AcceleratedCodeIterations() const override;
virtual NodeInput* AcceleratedCodeIterativeInput() const override;
private:
NodeMetaReader meta_;
};
#endif // EXTERNALTRANSITION_H