nuke: subset name driven form node name

also publisher variant change is reflected in node name
This commit is contained in:
Jakub Jezek 2023-08-02 17:00:47 +02:00
parent a161a5113f
commit dc8cd15f18
No known key found for this signature in database
GPG key ID: 730D7C02726179A7
2 changed files with 34 additions and 1 deletions

View file

@ -564,6 +564,9 @@ def list_instances(creator_id=None):
if creator_id and instance_data["creator_identifier"] != creator_id:
continue
# node name could change, so update subset name data
_update_subset_name_data(instance_data, node)
if "render_order" not in node.knobs():
subset_instances.append((node, instance_data))
continue
@ -589,6 +592,25 @@ def list_instances(creator_id=None):
return ordered_instances
def _update_subset_name_data(instance_data, node):
"""Update subset name data in instance data.
Args:
instance_data (dict): instance creator data
node (nuke.Node): nuke node
"""
# make sure node name is subset name
old_subset_name = instance_data["subset"]
old_variant = instance_data["variant"]
subset_name_root = old_subset_name.replace(old_variant, "")
new_subset_name = node.name()
new_variant = new_subset_name.replace(subset_name_root, "")
instance_data["subset"] = new_subset_name
instance_data["variant"] = new_variant
def remove_instance(instance):
"""Remove instance from current workfile metadata.

View file

@ -212,9 +212,20 @@ class NukeCreator(NewCreator):
created_instance["creator_attributes"].pop(key)
def update_instances(self, update_list):
for created_inst, _changes in update_list:
for created_inst, changes in update_list:
instance_node = created_inst.transient_data["node"]
changed_keys = {
key: changes[key].new_value
for key in changes.changed_keys
}
# update instance node name if subset name changed
if "subset" in changed_keys:
instance_node["name"].setValue(
changed_keys["subset"]
)
# in case node is not existing anymore (user erased it manually)
try:
instance_node.fullName()