mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
Houdini correctly set and validate ROP bypass state on instance toggle
This commit is contained in:
parent
9d8133ef82
commit
f95ef7dd1c
2 changed files with 53 additions and 0 deletions
|
|
@ -39,6 +39,8 @@ def install():
|
||||||
avalon.on("save", on_save)
|
avalon.on("save", on_save)
|
||||||
avalon.on("open", on_open)
|
avalon.on("open", on_open)
|
||||||
|
|
||||||
|
pyblish.register_callback("instanceToggled", on_pyblish_instance_toggled)
|
||||||
|
|
||||||
log.info("Setting default family states for loader..")
|
log.info("Setting default family states for loader..")
|
||||||
avalon.data["familiesStateToggled"] = ["colorbleed.imagesequence"]
|
avalon.data["familiesStateToggled"] = ["colorbleed.imagesequence"]
|
||||||
|
|
||||||
|
|
@ -91,3 +93,20 @@ def on_open(*args):
|
||||||
"your Maya scene.")
|
"your Maya scene.")
|
||||||
dialog.on_show.connect(_on_show_inventory)
|
dialog.on_show.connect(_on_show_inventory)
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
|
|
||||||
|
def on_pyblish_instance_toggled(instance, new_value, old_value):
|
||||||
|
"""Toggle saver tool passthrough states on instance toggles."""
|
||||||
|
|
||||||
|
nodes = instance[:]
|
||||||
|
if not nodes:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Assume instance node is first node
|
||||||
|
instance_node = nodes[0]
|
||||||
|
|
||||||
|
if instance_node.isBypassed() != (not old_value):
|
||||||
|
print("%s old bypass state didn't match old instance state, "
|
||||||
|
"updating anyway.." % instance_node.path())
|
||||||
|
|
||||||
|
instance_node.bypass(not new_value)
|
||||||
|
|
|
||||||
34
colorbleed/plugins/houdini/publish/validate_bypass.py
Normal file
34
colorbleed/plugins/houdini/publish/validate_bypass.py
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
import pyblish.api
|
||||||
|
import colorbleed.api
|
||||||
|
|
||||||
|
|
||||||
|
class ValidateBypassed(pyblish.api.InstancePlugin):
|
||||||
|
"""Validate all primitives build hierarchy from attribute when enabled.
|
||||||
|
|
||||||
|
The name of the attribute must exist on the prims and have the same name
|
||||||
|
as Build Hierarchy from Attribute's `Path Attribute` value on the Alembic
|
||||||
|
ROP node whenever Build Hierarchy from Attribute is enabled.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
order = colorbleed.api.ValidateContentsOrder - 0.1
|
||||||
|
families = ["*"]
|
||||||
|
hosts = ["houdini"]
|
||||||
|
label = "Validate ROP Bypass"
|
||||||
|
|
||||||
|
def process(self, instance):
|
||||||
|
|
||||||
|
invalid = self.get_invalid(instance)
|
||||||
|
if invalid:
|
||||||
|
rop = invalid[0]
|
||||||
|
raise RuntimeError(
|
||||||
|
"ROP node %s is set to bypass, publishing cannot continue.." %
|
||||||
|
rop.path()
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_invalid(cls, instance):
|
||||||
|
|
||||||
|
rop = instance[0]
|
||||||
|
if rop.isBypassed():
|
||||||
|
return [rop]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue