mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
moves get_visibile function to lib
This commit is contained in:
parent
923d15097f
commit
048be38b6d
1 changed files with 60 additions and 0 deletions
|
|
@ -242,3 +242,63 @@ def collect_animation_data():
|
|||
|
||||
def get_current_renderlayer():
|
||||
return cmds.editRenderLayerGlobals(query=True, currentRenderLayer=True)
|
||||
|
||||
|
||||
def is_visible(node,
|
||||
displayLayer=True,
|
||||
intermediateObject=True,
|
||||
parentHidden=True,
|
||||
visibility=True):
|
||||
"""Is `node` visible?
|
||||
|
||||
Returns whether a node is hidden by one of the following methods:
|
||||
- The node exists (always checked)
|
||||
- The node must be a dagNode (always checked)
|
||||
- The node's visibility is off.
|
||||
- The node is set as intermediate Object.
|
||||
- The node is in a disabled displayLayer.
|
||||
- Whether any of its parent nodes is hidden.
|
||||
|
||||
Roughly based on: http://ewertb.soundlinker.com/mel/mel.098.php
|
||||
|
||||
Returns:
|
||||
bool: Whether the node is visible in the scene
|
||||
|
||||
"""
|
||||
|
||||
# Only existing objects can be visible
|
||||
if not cmds.objExists(node):
|
||||
return False
|
||||
|
||||
# Only dagNodes can be visible
|
||||
if not cmds.objectType(node, isAType='dagNode'):
|
||||
return False
|
||||
|
||||
if visibility:
|
||||
if not cmds.getAttr('{0}.visibility'.format(node)):
|
||||
return False
|
||||
|
||||
if intermediateObject and cmds.objectType(node, isAType='shape'):
|
||||
if cmds.getAttr('{0}.intermediateObject'.format(node)):
|
||||
return False
|
||||
|
||||
if displayLayer:
|
||||
# Display layers set overrideEnabled and overrideVisibility on members
|
||||
if cmds.attributeQuery('overrideEnabled', node=node, exists=True):
|
||||
override_enabled = cmds.getAttr('{}.overrideEnabled'.format(node))
|
||||
override_visibility = cmds.getAttr('{}.overrideVisibility'.format(node))
|
||||
if override_enabled and override_visibility:
|
||||
return False
|
||||
|
||||
if parentHidden:
|
||||
parents = cmds.listRelatives(node, parent=True, fullPath=True)
|
||||
if parents:
|
||||
parent = parents[0]
|
||||
if not is_visible(parent,
|
||||
displayLayer=displayLayer,
|
||||
intermediateObject=False,
|
||||
parentHidden=parentHidden,
|
||||
visibility=visibility):
|
||||
return False
|
||||
|
||||
return True
|
||||
Loading…
Add table
Add a link
Reference in a new issue