Merge pull request #5061 from fabiaserra/bugfix/nuke_template_workfile

This commit is contained in:
Jakub Ježek 2023-10-30 12:46:55 +01:00 committed by GitHub
commit c8cd4595c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 19 deletions

View file

@ -244,8 +244,14 @@ class MayaPlaceholderLoadPlugin(PlaceholderPlugin, PlaceholderLoadMixin):
return self.get_load_plugin_options(options)
def post_placeholder_process(self, placeholder, failed):
"""Hide placeholder, add them to placeholder set
"""Cleanup placeholder after load of its corresponding representations.
Args:
placeholder (PlaceholderItem): Item which was just used to load
representation.
failed (bool): Loading of representation failed.
"""
# Hide placeholder and add them to placeholder set
node = placeholder.scene_identifier
cmds.sets(node, addElement=PLACEHOLDER_SET)

View file

@ -163,8 +163,10 @@ class NukePlaceholderLoadPlugin(NukePlaceholderPlugin, PlaceholderLoadMixin):
)
return loaded_representation_ids
def _before_repre_load(self, placeholder, representation):
def _before_placeholder_load(self, placeholder):
placeholder.data["nodes_init"] = nuke.allNodes()
def _before_repre_load(self, placeholder, representation):
placeholder.data["last_repre_id"] = str(representation["_id"])
def collect_placeholders(self):
@ -197,6 +199,13 @@ class NukePlaceholderLoadPlugin(NukePlaceholderPlugin, PlaceholderLoadMixin):
return self.get_load_plugin_options(options)
def post_placeholder_process(self, placeholder, failed):
"""Cleanup placeholder after load of its corresponding representations.
Args:
placeholder (PlaceholderItem): Item which was just used to load
representation.
failed (bool): Loading of representation failed.
"""
# deselect all selected nodes
placeholder_node = nuke.toNode(placeholder.scene_identifier)
@ -603,6 +612,13 @@ class NukePlaceholderCreatePlugin(
return self.get_create_plugin_options(options)
def post_placeholder_process(self, placeholder, failed):
"""Cleanup placeholder after load of its corresponding representations.
Args:
placeholder (PlaceholderItem): Item which was just used to load
representation.
failed (bool): Loading of representation failed.
"""
# deselect all selected nodes
placeholder_node = nuke.toNode(placeholder.scene_identifier)

View file

@ -1472,8 +1472,15 @@ class PlaceholderLoadMixin(object):
context_filters=context_filters
))
def _before_placeholder_load(self, placeholder):
"""Can be overridden. It's called before placeholder representations
are loaded.
"""
pass
def _before_repre_load(self, placeholder, representation):
"""Can be overriden. Is called before representation is loaded."""
"""Can be overridden. It's called before representation is loaded."""
pass
@ -1506,7 +1513,7 @@ class PlaceholderLoadMixin(object):
return output
def populate_load_placeholder(self, placeholder, ignore_repre_ids=None):
"""Load placeholder is goind to load matching representations.
"""Load placeholder is going to load matching representations.
Note:
Ignore repre ids is to avoid loading the same representation again
@ -1528,7 +1535,7 @@ class PlaceholderLoadMixin(object):
# TODO check loader existence
loader_name = placeholder.data["loader"]
loader_args = placeholder.data["loader_args"]
loader_args = self.parse_loader_args(placeholder.data["loader_args"])
placeholder_representations = self._get_representations(placeholder)
@ -1550,6 +1557,11 @@ class PlaceholderLoadMixin(object):
self.project_name, filtered_representations
)
loaders_by_name = self.builder.get_loaders_by_name()
self._before_placeholder_load(
placeholder
)
failed = False
for repre_load_context in repre_load_contexts.values():
representation = repre_load_context["representation"]
repre_context = representation["context"]
@ -1562,24 +1574,24 @@ class PlaceholderLoadMixin(object):
repre_context["subset"],
repre_context["asset"],
loader_name,
loader_args
placeholder.data["loader_args"],
)
)
try:
container = load_with_repre_context(
loaders_by_name[loader_name],
repre_load_context,
options=self.parse_loader_args(loader_args)
options=loader_args
)
except Exception:
failed = True
self.load_failed(placeholder, representation)
failed = True
else:
failed = False
self.load_succeed(placeholder, container)
self.post_placeholder_process(placeholder, failed)
# Run post placeholder process after load of all representations
self.post_placeholder_process(placeholder, failed)
if failed:
self.log.debug(
@ -1599,10 +1611,7 @@ class PlaceholderLoadMixin(object):
placeholder.load_succeed(container)
def post_placeholder_process(self, placeholder, failed):
"""Cleanup placeholder after load of single representation.
Can be called multiple times during placeholder item populating and is
called even if loading failed.
"""Cleanup placeholder after load of its corresponding representations.
Args:
placeholder (PlaceholderItem): Item which was just used to load
@ -1801,10 +1810,7 @@ class PlaceholderCreateMixin(object):
placeholder.create_succeed(creator_instance)
def post_placeholder_process(self, placeholder, failed):
"""Cleanup placeholder after load of single representation.
Can be called multiple times during placeholder item populating and is
called even if loading failed.
"""Cleanup placeholder after load of its corresponding representations.
Args:
placeholder (PlaceholderItem): Item which was just used to load