Skip to content

collect_instance_members

CollectInstanceMembers

Bases: InstancePlugin

Collect members of instance.

This collector will collect the assets for the families that support to have them included as External Data, and will add them to the instance as members.

Source code in client/ayon_unreal/plugins/publish/collect_instance_members.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class CollectInstanceMembers(pyblish.api.InstancePlugin):
    """
    Collect members of instance.

    This collector will collect the assets for the families that support to
    have them included as External Data, and will add them to the instance
    as members.
    """

    order = pyblish.api.CollectorOrder + 0.1
    hosts = ["unreal"]
    families = ["camera", "look", "staticMesh", "uasset"]
    label = "Collect Instance Members"

    def process(self, instance):
        """Collect members of instance."""
        self.log.info("Collecting instance members")

        ar = unreal.AssetRegistryHelpers.get_asset_registry()

        inst_path = instance.data.get('instance_path')
        inst_name = inst_path.split('/')[-1]

        pub_instance = ar.get_asset_by_object_path(
            f"{inst_path}.{inst_name}").get_asset()

        if not pub_instance:
            self.log.error(f"{inst_path}.{inst_name}")
            raise RuntimeError(f"Instance {instance} not found.")

        if not pub_instance.get_editor_property("add_external_assets"):
            # No external assets in the instance
            return

        assets = pub_instance.get_editor_property('asset_data_external')

        members = [asset.get_path_name() for asset in assets]

        self.log.debug(f"Members: {members}")

        instance.data["members"] = members

process(instance)

Collect members of instance.

Source code in client/ayon_unreal/plugins/publish/collect_instance_members.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def process(self, instance):
    """Collect members of instance."""
    self.log.info("Collecting instance members")

    ar = unreal.AssetRegistryHelpers.get_asset_registry()

    inst_path = instance.data.get('instance_path')
    inst_name = inst_path.split('/')[-1]

    pub_instance = ar.get_asset_by_object_path(
        f"{inst_path}.{inst_name}").get_asset()

    if not pub_instance:
        self.log.error(f"{inst_path}.{inst_name}")
        raise RuntimeError(f"Instance {instance} not found.")

    if not pub_instance.get_editor_property("add_external_assets"):
        # No external assets in the instance
        return

    assets = pub_instance.get_editor_property('asset_data_external')

    members = [asset.get_path_name() for asset in assets]

    self.log.debug(f"Members: {members}")

    instance.data["members"] = members