diff options
Diffstat (limited to 'source/blender/compositor/nodes/COM_TranslateNode.cpp')
-rw-r--r-- | source/blender/compositor/nodes/COM_TranslateNode.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/source/blender/compositor/nodes/COM_TranslateNode.cpp b/source/blender/compositor/nodes/COM_TranslateNode.cpp index c805f8f8baa..44d796c2911 100644 --- a/source/blender/compositor/nodes/COM_TranslateNode.cpp +++ b/source/blender/compositor/nodes/COM_TranslateNode.cpp @@ -23,6 +23,7 @@ #include "COM_TranslateNode.h" #include "COM_TranslateOperation.h" +#include "COM_WrapOperation.h" #include "COM_ExecutionSystem.h" TranslateNode::TranslateNode(bNode *editorNode) : Node(editorNode) @@ -37,10 +38,32 @@ void TranslateNode::convertToOperations(ExecutionSystem *graph, CompositorContex InputSocket *inputYSocket = this->getInputSocket(2); OutputSocket *outputSocket = this->getOutputSocket(0); TranslateOperation *operation = new TranslateOperation(); - - inputSocket->relinkConnections(operation->getInputSocket(0), 0, graph); + + bNode *bnode = this->getbNode(); + NodeTranslateData *data = (NodeTranslateData *)bnode->storage; + + if (data->wrap_axis) { + WrapOperation *wrapOperation = new WrapOperation(); + wrapOperation->setWrapping(data->wrap_axis); + inputSocket->relinkConnections(wrapOperation->getInputSocket(0), 0, graph); + addLink(graph, wrapOperation->getOutputSocket(), operation->getInputSocket(0)); + graph->addOperation(wrapOperation); + } + else { + inputSocket->relinkConnections(operation->getInputSocket(0), 0, graph); + } + + if (data->relative) { + const RenderData *rd = context->getRenderData(); + float fx = rd->xsch * rd->size / 100.0f; + float fy = rd->ysch * rd->size / 100.0f; + + operation->setFactorXY(fx, fy); + } + inputXSocket->relinkConnections(operation->getInputSocket(1), 1, graph); inputYSocket->relinkConnections(operation->getInputSocket(2), 2, graph); outputSocket->relinkConnections(operation->getOutputSocket(0)); graph->addOperation(operation); } + |