Add set_instance_data method to reduce redundancy

This commit is contained in:
Sharkitty 2023-11-13 11:58:47 +01:00
parent c614522b4c
commit 62fa330417
6 changed files with 34 additions and 63 deletions

View file

@ -217,7 +217,7 @@ class BaseCreator(Creator):
Args:
subset_name(str): Subset name of created instance.
instance_data(dict): Base data for instance.
instance_data(dict): Instance base data.
pre_create_data(dict): Data based on pre creation attributes.
Those may affect how creator works.
"""
@ -237,17 +237,7 @@ class BaseCreator(Creator):
"name": collection.name,
}
# Set instance data
instance_data.update(
{
"id": "pyblish.avalon.instance",
"creator_identifier": self.identifier,
"label": subset_name,
"task": get_current_task_name(),
"subset": subset_name,
"instance_node": instance_node,
}
)
self.set_instance_data(subset_name, instance_data, instance_node)
self._add_instance_to_context(
CreatedInstance(
@ -326,6 +316,33 @@ class BaseCreator(Creator):
self._remove_instance_from_context(instance)
def set_instance_data(
self,
subset_name: str,
instance_data: dict,
instance_node: bpy.types.ID,
):
"""Fill instance data with required items.
Args:
subset_name(str): Subset name of created instance.
instance_data(dict): Instance base data.
instance_node(bpy.types.ID): Instance node in blender scene.
"""
if not instance_data:
instance_data = {}
instance_data.update(
{
"id": "pyblish.avalon.instance",
"creator_identifier": self.identifier,
"label": subset_name,
"task": get_current_task_name(),
"subset": subset_name,
"instance_node": instance_node,
}
)
class Loader(LoaderPlugin):
"""Base class for Loader plug-ins."""

View file

@ -47,17 +47,7 @@ class CreateBlendScene(plugin.Creator):
"name": asset_group.name
}
instance_data.update(
{
"id": "publish.avalon.instance",
"creator_identifier": self.identifier,
"label": subset_name,
"task": get_current_task_name(),
"subset": subset_name,
"instance_node": instance_node,
}
)
self.set_instance_data(subset_name, instance_data, instance_node)
lib.imprint(asset_group, instance_data)
# Add selected objects to instance

View file

@ -52,16 +52,7 @@ class CreateCamera(plugin.BaseCreator):
"name": asset_group.name,
}
instance_data.update(
{
"id": "pyblish.avalon.instance",
"creator_identifier": self.identifier,
"label": subset_name,
"task": get_current_task_name(),
"subset": subset_name,
"instance_node": instance_node,
}
)
self.set_instance_data(subset_name, instance_data, instance_node)
lib.imprint(asset_group, instance_data)
if pre_create_data.get("useSelection"):

View file

@ -51,16 +51,7 @@ class CreateLayout(plugin.BaseCreator):
"name": asset_group.name,
}
instance_data.update(
{
"id": "pyblish.avalon.instance",
"creator_identifier": self.identifier,
"label": subset_name,
"task": get_current_task_name(),
"subset": subset_name,
"instance_node": instance_node,
}
)
self.set_instance_data(subset_name, instance_data, instance_node)
lib.imprint(asset_group, instance_data)
# Add selected objects to instance

View file

@ -51,16 +51,7 @@ class CreateModel(plugin.BaseCreator):
"name": asset_group.name,
}
instance_data.update(
{
"id": "pyblish.avalon.instance",
"creator_identifier": self.identifier,
"label": subset_name,
"task": get_current_task_name(),
"subset": subset_name,
"instance_node": instance_node,
}
)
self.set_instance_data(subset_name, instance_data, instance_node)
lib.imprint(asset_group, instance_data)
# Add selected objects to instance

View file

@ -51,16 +51,7 @@ class CreateRig(plugin.BaseCreator):
"name": asset_group.name,
}
instance_data.update(
{
"id": "pyblish.avalon.instance",
"creator_identifier": self.identifier,
"label": subset_name,
"task": get_current_task_name(),
"subset": subset_name,
"instance_node": instance_node,
}
)
self.set_instance_data(subset_name, instance_data, instance_node)
lib.imprint(asset_group, instance_data)
# Add selected objects to instance