diff --git a/openpype/hosts/blender/api/plugin.py b/openpype/hosts/blender/api/plugin.py index aef891bd83..e9683bee3a 100644 --- a/openpype/hosts/blender/api/plugin.py +++ b/openpype/hosts/blender/api/plugin.py @@ -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.""" diff --git a/openpype/hosts/blender/plugins/create/create_blendScene.py b/openpype/hosts/blender/plugins/create/create_blendScene.py index df3a70f199..0773c4dae3 100644 --- a/openpype/hosts/blender/plugins/create/create_blendScene.py +++ b/openpype/hosts/blender/plugins/create/create_blendScene.py @@ -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 diff --git a/openpype/hosts/blender/plugins/create/create_camera.py b/openpype/hosts/blender/plugins/create/create_camera.py index a42a9d6ef0..8dbba229a9 100644 --- a/openpype/hosts/blender/plugins/create/create_camera.py +++ b/openpype/hosts/blender/plugins/create/create_camera.py @@ -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"): diff --git a/openpype/hosts/blender/plugins/create/create_layout.py b/openpype/hosts/blender/plugins/create/create_layout.py index ef1822dedf..a9bf115ea9 100644 --- a/openpype/hosts/blender/plugins/create/create_layout.py +++ b/openpype/hosts/blender/plugins/create/create_layout.py @@ -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 diff --git a/openpype/hosts/blender/plugins/create/create_model.py b/openpype/hosts/blender/plugins/create/create_model.py index e4937f989e..3501071e8f 100644 --- a/openpype/hosts/blender/plugins/create/create_model.py +++ b/openpype/hosts/blender/plugins/create/create_model.py @@ -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 diff --git a/openpype/hosts/blender/plugins/create/create_rig.py b/openpype/hosts/blender/plugins/create/create_rig.py index b54cc73d4a..b5b61b3971 100644 --- a/openpype/hosts/blender/plugins/create/create_rig.py +++ b/openpype/hosts/blender/plugins/create/create_rig.py @@ -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