MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/MaterialX / copyInputs

Method copyInputs

source/MaterialXGraphEditor/Graph.cpp:1593–1685  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1591}
1592
1593void Graph::copyInputs()
1594{
1595 for (std::map<UiNodePtr, UiNodePtr>::iterator iter = _copiedNodes.begin(); iter != _copiedNodes.end(); ++iter)
1596 {
1597 int count = 0;
1598 UiNodePtr origNode = iter->first;
1599 UiNodePtr copyNode = iter->second;
1600 for (UiPinPtr pin : origNode->getInputPins())
1601 {
1602 if (origNode->getConnectedNode(pin->getName()) && !_ctrlClick)
1603 {
1604 // If original node is connected check if connect node is in copied nodes
1605 if (_copiedNodes.find(origNode->getConnectedNode(pin->getName())) != _copiedNodes.end())
1606 {
1607 // Set copy node connected to the value at this key
1608 createEdge(_copiedNodes[origNode->getConnectedNode(pin->getName())], copyNode, copyNode->getInputPins()[count]->getInput());
1609 UiNodePtr upNode = _copiedNodes[origNode->getConnectedNode(pin->getName())];
1610 if (copyNode->getNode() || copyNode->getNodeGraph())
1611 {
1612 mx::InputPtr connectingInput = nullptr;
1613 copyNode->getInputPins()[count]->getInput()->copyContentFrom(pin->getInput());
1614
1615 // Update value to be empty
1616 if (copyNode->getNode() && copyNode->getNode()->getType() == mx::SURFACE_SHADER_TYPE_STRING)
1617 {
1618 if (upNode->getOutput())
1619 {
1620 copyNode->getInputPins()[count]->getInput()->setConnectedOutput(upNode->getOutput());
1621 }
1622 else if (upNode->getInput())
1623 {
1624
1625 copyNode->getInputPins()[count]->getInput()->setConnectedInterfaceName(upNode->getName());
1626 }
1627 else
1628 {
1629 if (upNode->getNodeGraph())
1630 {
1631 ed::PinId outputId = getOutputPin(copyNode, upNode, copyNode->getInputPins()[count]);
1632 for (UiPinPtr outPin : upNode->getOutputPins())
1633 {
1634 if (outPin->getPinId() == outputId)
1635 {
1636 mx::OutputPtr outputs = upNode->getNodeGraph()->getOutput(outPin->getName());
1637 copyNode->getInputPins()[count]->getInput()->setConnectedOutput(outputs);
1638 }
1639 }
1640 }
1641 else
1642 {
1643 copyNode->getInputPins()[count]->getInput()->setConnectedNode(upNode->getNode());
1644 }
1645 }
1646 }
1647 else
1648 {
1649 if (upNode->getInput())
1650 {

Callers

nothing calls this directly

Calls 15

getNodeGraphMethod · 0.80
copyContentFromMethod · 0.80
setConnectedOutputMethod · 0.80
getPinIdMethod · 0.80
setConnectedMethod · 0.80
setOutputConnectionMethod · 0.80
getInterfaceInputMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
getConnectedNodeMethod · 0.45
getNameMethod · 0.45

Tested by

no test coverage detected