void StandardNodeGadget::setEdgeGadget( Edge edge, GadgetPtr gadget ) { GadgetPtr previous = getEdgeGadget( edge ); if( previous == gadget ) { return; } if( IECore::runTimeCast<Nodule>( gadget ) ) { throw IECore::Exception( "End Gadget can not be a Nodule." ); } LinearContainer *c = noduleContainer( edge ); GadgetPtr spacer = boost::static_pointer_cast<Gadget>( c->children().back() ); c->removeChild( spacer ); if( previous ) { c->removeChild( previous ); } if( gadget ) { c->addChild( gadget ); } c->addChild( spacer ); }
Gadget *StandardNodeGadget::getEdgeGadget( Edge edge ) { LinearContainer *c = noduleContainer( edge ); const size_t s = c->children().size(); if( s != 4 ) { return nullptr; } return c->getChild<Gadget>( s - 2 ); }
Gadget *StandardNodeGadget::getEdgeGadget( Edge edge ) { LinearContainer *c = noduleContainer( edge ); return c->getChild<Gadget>( c->children().size() - 1 ); }
void StandardNodeGadget::setEdgeGadget( Edge edge, GadgetPtr gadget ) { LinearContainer *c = noduleContainer( edge ); c->removeChild( c->getChild<Gadget>( c->children().size() - 1 ) ); c->addChild( gadget ); }