

def appendShaders(menuDefinition, prefix='/Arnold'):
    with IECoreArnold.UniverseBlock():
        it = arnold.AiUniverseGetNodeEntryIterator((arnold.AI_NODE_SHADER | arnold.AI_NODE_LIGHT))
        while (not arnold.AiNodeEntryIteratorFinished(it)):
            nodeEntry = arnold.AiNodeEntryIteratorGetNext(it)
            shaderName = arnold.AiNodeEntryGetName(nodeEntry)
            displayName = ' '.join([IECore.CamelCase.toSpaced(x) for x in shaderName.split('_')])
            if (arnold.AiNodeEntryGetType(nodeEntry) == arnold.AI_NODE_SHADER):
                menuPath = ((prefix + '/Shader/') + displayName)
                nodeType = GafferArnold.ArnoldShader
            else:
                menuPath = ((prefix + '/Light/') + displayName)
                nodeType = GafferArnold.ArnoldLight
            menuDefinition.append(menuPath, {
                'command': GafferUI.NodeMenu.nodeCreatorWrapper(IECore.curry(__shaderCreator, shaderName, nodeType)),
                'searchText': ('ai' + displayName.replace(' ', '')),
            })
        arnold.AiNodeEntryIteratorDestroy(it)
        arnold.AiEnd()

dataset/ETHPy150Open ImageEngine/gaffer/python/GafferArnoldUI/ShaderMenu.py appendShaders/original