void SetVisualiser::hashProcessedAttributes( const ScenePath &path, const Gaffer::Context *context, MurmurHash &h ) const { ConstCompoundDataPtr outSetsData = outSetsPlug()->getValue(); outSetsData->hash( h ); includeInheritedPlug()->hash( h ); // We also need to consider each of our candidate sets membership // definition (which we didn't need to when computing outSets). // outSetsData is map of names -> colors. ConstInternedStringVectorDataPtr setNames = outSetsData->member<InternedStringVectorData>( "names" ); for( auto &setName : setNames->readable() ) { h.append( inPlug()->setHash( setName ) ); } h.append( path.data(), path.size() ); stripeWidthPlug()->hash( h ); }
void BranchCreator::hashGlobals( const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const { ConstCompoundDataPtr mapping = boost::static_pointer_cast<const CompoundData>( mappingPlug()->getValue() ); if( !mapping->readable().size() ) { h = inPlug()->globalsPlug()->hash(); return; } MurmurHash branchGlobalsHash; hashBranchGlobals( mapping->member<InternedStringVectorData>( g_parentKey )->readable(), context, branchGlobalsHash ); if( branchGlobalsHash == MurmurHash() ) { h = inPlug()->globalsPlug()->hash(); return; } SceneProcessor::hashGlobals( context, parent, h ); inPlug()->globalsPlug()->hash( h ); mapping->hash( h ); h.append( branchGlobalsHash ); }