From 40cf531cb12bf6a042d4535b08bc3139ed415cac Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 22 Jun 2023 12:55:17 +0100 Subject: [PATCH] Adding support for excluded families. --- openpype/hosts/maya/plugins/load/actions.py | 17 ++--------------- openpype/pipeline/load/plugins.py | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/openpype/hosts/maya/plugins/load/actions.py b/openpype/hosts/maya/plugins/load/actions.py index 4855f3eed0..57d1039245 100644 --- a/openpype/hosts/maya/plugins/load/actions.py +++ b/openpype/hosts/maya/plugins/load/actions.py @@ -93,21 +93,8 @@ class ImportMayaLoader(load.LoaderPlugin): """ representations = ["ma", "mb", "obj"] - families = [ - "model", - "pointcache", - "proxyAbc", - "animation", - "mayaAscii", - "mayaScene", - "setdress", - "layout", - "camera", - "rig", - "camerarig", - "staticMesh", - "workfile" - ] + families = ["*"] + excluded_families = ["xgen"] label = "Import" order = 10 diff --git a/openpype/pipeline/load/plugins.py b/openpype/pipeline/load/plugins.py index e380d65bbe..433d7f671a 100644 --- a/openpype/pipeline/load/plugins.py +++ b/openpype/pipeline/load/plugins.py @@ -28,6 +28,7 @@ class LoaderPlugin(list): """ families = [] + excluded_families = [] representations = [] extensions = {"*"} order = 0 @@ -159,7 +160,10 @@ class LoaderPlugin(list): return False plugin_families = set(plugin_families) - if "*" in plugin_families: + + # Return if all families are allowed and no excluded families are + # defined. + if "*" in plugin_families and not cls.excluded_families: return True subset_doc = context["subset"] @@ -175,6 +179,17 @@ class LoaderPlugin(list): if not families: return False + + # Return if there are intersections between the subsets families and + # the loaders excluded families. + if list(set(families) & set(cls.excluded_families)): + return False + + # Return if all families are allowed since excluded families have + # already been considered. + if "*" in plugin_families: + return True + return any(family in plugin_families for family in families) @classmethod