Esempio n. 1
0
    def delNodeCB(self, node, data):
        ''' Callback when a node has been deleted '''
        mobject = MObjectHandle(node).object()
        nodeFn = MFnDependencyNode(mobject)
        if nodeFn.hasUniqueName():
            nodeName = nodeFn.name()

            didSomething = False

            if cmds.nodeType(nodeName) == "displacementShader":
                items = self.displacementList.findItems(
                    nodeName, QtCore.Qt.MatchExactly)
                for item in items:
                    self.displacementList.takeItem(
                        self.displacementList.row(item))

                # remove shaders from caches
                for cache in self.ABCViewerNode.values():
                    didSomething = True
                    cache.removeDisplacement(nodeName)

            else:
                items = self.shadersList.findItems(nodeName,
                                                   QtCore.Qt.MatchExactly)
                for item in items:
                    self.shadersList.takeItem(self.shadersList.row(item))

                # remove shaders from caches
                for cache in self.ABCViewerNode.values():
                    didSomething = True
                    cache.removeShader(nodeName)

            if didSomething:
                self.checkShaders()
Esempio n. 2
0
    def delNodeCB(self, node, data ):
        ''' Callback when a node has been deleted '''
        mobject = MObjectHandle( node ).object()
        nodeFn = MFnDependencyNode ( mobject )
        if nodeFn.hasUniqueName():
            nodeName = nodeFn.name()

            didSomething = False

            if cmds.nodeType(nodeName) == "displacementShader":
                items = self.displacementList.findItems(nodeName, QtCore.Qt.MatchExactly)
                for item in items:
                    self.displacementList.takeItem(self.displacementList.row(item))   

                # remove shaders from caches
                for cache in self.ABCViewerNode.values():
                    didSomething = True
                    cache.removeDisplacement(nodeName)

            else:
                items = self.shadersList.findItems(nodeName, QtCore.Qt.MatchExactly)
                for item in items:
                    self.shadersList.takeItem(self.shadersList.row(item))

                # remove shaders from caches
                for cache in self.ABCViewerNode.values():
                    didSomething = True
                    cache.removeShader(nodeName)                
            
            if didSomething:
                self.checkShaders()
Esempio n. 3
0
    def nameChangedCB(self, node, prevName, client):
        ''' Callback when a node is renamed '''

        if prevName == "" or not prevName or prevName.startswith("_"):
            return
        handle = MObjectHandle( node )
        if not handle.isValid():
            return
        mobject = handle.object()

        nodeFn = MFnDependencyNode ( mobject )
        if nodeFn.hasUniqueName():
            nodeName = nodeFn.name()
            if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"):

                if cmds.nodeType(nodeName) == "displacementShader":
                    items = self.displacementList.findItems(prevName, QtCore.Qt.MatchExactly)
                    for item in items:
                        item.setText(nodeName)

                    # renaming shaders in caches
                    for cache in self.ABCViewerNode.values():
                        cache.renameDisplacement(prevName, nodeName)
                    self.checkShaders()
                else:
                    items = self.shadersList.findItems(prevName, QtCore.Qt.MatchExactly)
                    for item in items:
                        item.setText(nodeName)

            if cmds.nodeType(nodeName) == "shadingEngine":
                    # renaming shaders in caches
                    for cache in self.ABCViewerNode.values():
                        cache.renameShader(prevName, nodeName)

                    self.checkShaders()
Esempio n. 4
0
    def newNodeCB(self, newNode, data):
        """Callback when creating a new node"""

        mobject = MObjectHandle(newNode).object()
        nodeFn = MFnDependencyNode(mobject)
        if nodeFn.hasUniqueName():
            nodeName = nodeFn.name()
            if cmds.getClassification(cmds.nodeType(nodeName),
                                      satisfies="shader"):
                # add shader to scroller
                self.shaderEditor.addShader(nodeName)
            elif nodeFn.typeName() == 'renderLayer':
                self.renderLayer.addItems([nodeName])
Esempio n. 5
0
    def delNodeCB(self, node, data):
        """Callback when a node has been deleted"""

        mobject = MObjectHandle(node).object()
        nodeFn = MFnDependencyNode(mobject)
        if nodeFn.hasUniqueName():
            nodeName = nodeFn.name()

            didSomething = False
            for cache in self.ABCViewerNode.values():
                didSomething = True
                cache.removeShader(nodeName)

            self.shaderEditor.removeShader(nodeName)

            if didSomething:
                self.checkShaders()
Esempio n. 6
0
def findMPlug(in_node, in_attribute):
    '''
    @param in_node_name: string, unique name of the node,
    meaning the full path if multiple nodes of this name exist
    @param in_attribute_name: string, attribute to find,
    should exist or you'll get errors
    '''
    node = node_utils.getNodeFromName(in_node)
    return MPlug(node, MFnDependencyNode(node).attribute(in_attribute))
Esempio n. 7
0
 def newNodeCB(self, newNode, data ):
     ''' Callback when creating a new node '''
     mobject = MObjectHandle( newNode ).object()
     nodeFn = MFnDependencyNode ( mobject )
     if nodeFn.hasUniqueName():
         nodeName = nodeFn.name()
         if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"):
             if cmds.nodeType(nodeName) == "displacementShader":
                 icon = QtGui.QIcon()
                 icon.addFile(os.path.join(d, "../../icons/sg.xpm"), QtCore.QSize(25,25))
                 item = QtGui.QListWidgetItem(nodeName)
                 item.setIcon(icon)
                 self.displacementList.addItem(item)
             else:
                 icon = QtGui.QIcon()
                 icon.addFile(os.path.join(d, "../../icons/sg.xpm"), QtCore.QSize(25,25))
                 item = QtGui.QListWidgetItem(nodeName)
                 item.setIcon(icon)
                 self.shadersList.addItem(item)
Esempio n. 8
0
    def nameChangedCB(self, node, prevName, client):
        ''' Callback when a node is renamed '''

        if prevName == "" or not prevName or prevName.startswith("_"):
            return
        handle = MObjectHandle(node)
        if not handle.isValid():
            return
        mobject = handle.object()

        nodeFn = MFnDependencyNode(mobject)
        if nodeFn.hasUniqueName():
            nodeName = nodeFn.name()
            if not cmds.objExists(nodeName):
                return
            if cmds.getClassification(cmds.nodeType(nodeName),
                                      satisfies="shader"):

                if cmds.nodeType(nodeName) == "displacementShader":
                    items = self.displacementList.findItems(
                        prevName, QtCore.Qt.MatchExactly)
                    for item in items:
                        item.setText(nodeName)

                    # renaming shaders in caches
                    for cache in self.ABCViewerNode.values():
                        cache.renameDisplacement(prevName, nodeName)
                    self.checkShaders()
                else:
                    items = self.shadersList.findItems(prevName,
                                                       QtCore.Qt.MatchExactly)
                    for item in items:
                        item.setText(nodeName)

            if cmds.nodeType(nodeName) == "shadingEngine":
                # renaming shaders in caches
                for cache in self.ABCViewerNode.values():
                    cache.renameShader(prevName, nodeName)

                self.checkShaders()
Esempio n. 9
0
 def newNodeCB(self, newNode, data):
     ''' Callback when creating a new node '''
     mobject = MObjectHandle(newNode).object()
     nodeFn = MFnDependencyNode(mobject)
     if nodeFn.hasUniqueName():
         nodeName = nodeFn.name()
         if cmds.getClassification(cmds.nodeType(nodeName),
                                   satisfies="shader"):
             if cmds.nodeType(nodeName) == "displacementShader":
                 icon = QtGui.QIcon()
                 icon.addFile(os.path.join(d, "../../icons/sg.xpm"),
                              QtCore.QSize(25, 25))
                 item = QtGui.QListWidgetItem(nodeName)
                 item.setIcon(icon)
                 self.displacementList.addItem(item)
             else:
                 icon = QtGui.QIcon()
                 icon.addFile(os.path.join(d, "../../icons/sg.xpm"),
                              QtCore.QSize(25, 25))
                 item = QtGui.QListWidgetItem(nodeName)
                 item.setIcon(icon)
                 self.shadersList.addItem(item)
Esempio n. 10
0
def getDependNodeFromName(in_name):
    return MFnDependencyNode(getNodeFromName(in_name))
Esempio n. 11
0
    def nameChangedCB(self, node, prevName, client):
        """Callback when a node is renamed"""

        if prevName == "" or not prevName or prevName.startswith("_"):
            return
        handle = MObjectHandle(node)
        if not handle.isValid():
            return
        mobject = handle.object()

        nodeFn = MFnDependencyNode(mobject)
        if nodeFn.hasUniqueName():
            nodeName = nodeFn.name()
            if not cmds.objExists(nodeName):
                return

            # we need to ensure that we are updating all the caches, not just the one selected
            current_selection = cmds.ls(sl=True)
            cmds.select(cmds.ls(type='alembicHolder'))
            self.getNode()

            if self.ABCViewerNode != {}:

                if cmds.getClassification(cmds.nodeType(nodeName),
                                          satisfies="shader"):

                    if cmds.nodeType(nodeName) == "displacementShader":
                        # renaming displacements in caches
                        for cache in self.ABCViewerNode.values():
                            cache.renameDisplacement(prevName, nodeName)
                            self.reset(shape=cache.shape)
                        self.shaderEditor.renameShader(prevName, nodeName)

                    else:
                        # renaming shaders in caches
                        for cache in self.ABCViewerNode.values():
                            cache.renameShader(prevName, nodeName)
                            self.reset(shape=cache.shape)
                        self.shaderEditor.renameShader(prevName, nodeName)

                elif cmds.nodeType(nodeName) == "shadingEngine":
                    # renaming shaders in caches
                    for cache in self.ABCViewerNode.values():
                        cache.renameShader(prevName, nodeName)
                        self.reset(shape=cache.shape)

                    self.shaderEditor.renameShader(prevName, nodeName)
                    self.checkShaders()

                elif cmds.nodeType(nodeName) == "renderLayer":

                    for cache in self.ABCViewerNode.values():
                        cache.assignations.layers.renameLayer(
                            prevName, nodeName)
                        cache.assignations.writeLayer()
                        self.reset(shape=cache.shape)

                    # update the layers combo
                    self.getLayers()
                    self.setLayer(nodeName)

            cmds.select(current_selection)