Exemplo n.º 1
0
def get_driver_from_driven(drivenCtl):
    """
    Finds the Driver controls for a given driven ctl

    Arguments:
        drivenCtl (PyNode): A Driven Node to query.

    Returns:
        list [All found Driver Nodes]

    """
    driver_ctls = []

    retrieved_SDK_nodes = sdk_io.getConnectedSDKs(drivenCtl)
    retrieved_SDK_nodes.extend(sdk_io.getMultiDriverSDKs(drivenCtl))

    for rtv_attrs in retrieved_SDK_nodes:
        for rtv_attr in rtv_attrs:
            if pm.nodeType(rtv_attr) in SDK_ANIMCURVES_TYPE:
                try:
                    SDK_info = sdk_io.getSDKInfo(rtv_attr.node())
                    if SDK_info['driverNode'] not in driver_ctls:
                        driver_ctls.append(SDK_info['driverNode'])
                except:  # noqa: E722
                    pass

    return driver_ctls
Exemplo n.º 2
0
def get_driver_keys(driverAttr,
                    firstKey=None,
                    prevKey=None,
                    nextKey=None,
                    lastKey=None):
    """
    Returns a list of Driver key values for the given driverAttr.

    If all optional arguments are None, will return list of all values

    Arguments:
        driverAttr (PyNode.Attribute): Driver Ctl.attr
        firstKey (bool):
        prevKey (bool):
        nextKey (bool):
        lastKey (bool):

    Returns:
        List (If all optional None) - List of driver key values
        float (If one specified) - The float value for the driver on that key.
    """
    dirver_con = pm.listConnections(driverAttr)

    keys_list = []
    if len(dirver_con) > 0:
        for con in dirver_con:
            if pm.nodeType(con) in SDK_ANIMCURVES_TYPE:
                SDK_dict = sdk_io.getSDKInfo(con)
                for key in SDK_dict["keys"]:
                    if key[0] not in keys_list:
                        keys_list.append(key[0])

        if firstKey:
            return keys_list[0]

        if prevKey:
            return next_smallest(driverAttr.get(), keys_list)

        if nextKey:
            return next_biggest(driverAttr.get(), keys_list)

        if lastKey:
            return keys_list[-1]
        else:
            return keys_list
Exemplo n.º 3
0
def delete_current_value_keys(current_driver_val, node, sourceDriverFilter):
    """
    Arguments:
        node ():
        sourceDriverFilter ():

    Returns:
        n/a
    """
    sourceSDKInfo = sdk_io.getConnectedSDKs(
        node, sourceDriverFilter=sourceDriverFilter)
    sourceSDKInfo.extend(
        sdk_io.getMultiDriverSDKs(node, sourceDriverFilter=sourceDriverFilter))

    for source_sdk_attr, driven_ctl in sourceSDKInfo:
        source_sdk = source_sdk_attr.node()
        keys = sdk_io.getSDKInfo(source_sdk)['keys']

        for i, key in enumerate(keys):
            if key[0] == current_driver_val:
                pm.cutKey(source_sdk_attr.node(),
                          index=(i, i),
                          option="keys",
                          clear=1)