diff --git a/client/ayon_core/hosts/hiero/plugins/publish/collect_clip_effects.py b/client/ayon_core/hosts/hiero/plugins/publish/collect_clip_effects.py index 85fd3ba048..1ff2f25edc 100644 --- a/client/ayon_core/hosts/hiero/plugins/publish/collect_clip_effects.py +++ b/client/ayon_core/hosts/hiero/plugins/publish/collect_clip_effects.py @@ -100,19 +100,21 @@ class CollectClipEffects(pyblish.api.InstancePlugin): effects_categorized[category_by_effect[found_cls]][key] = value # Categorize effects by track name. - effects_by_track = defaultdict(dict) - for key, value in effects.items(): - if key == "assignTo": - continue - - effects_by_track[value["track"]][key] = value - - for data in self.effect_tracks: - for track_name, track_effects in effects_by_track.items(): - if re.match(data["track_regex"], track_name) is None: + track_names_by_category = { + x["name"]: x["track_names"] for x in self.effect_tracks + } + for category, track_names in track_names_by_category.items(): + for key, value in effects.items(): + if key == "assignTo": continue - effects_categorized[data["name"]] = track_effects + if value["track"] not in track_names: + continue + + if category in effects_categorized: + effects_categorized[category][key] = value + else: + effects_categorized[category] = {key: value} # Ensure required `assignTo` data member exists. categories = list(effects_categorized.keys()) diff --git a/server_addon/hiero/server/settings/publish_plugins.py b/server_addon/hiero/server/settings/publish_plugins.py index 9902b68a25..b9e07639df 100644 --- a/server_addon/hiero/server/settings/publish_plugins.py +++ b/server_addon/hiero/server/settings/publish_plugins.py @@ -30,7 +30,7 @@ class CollectClipEffectsDefModel(BaseSettingsModel): class CollectClipEffectsTracksModel(BaseSettingsModel): _layout = "expanded" name: str = SettingsField("", title="Name") - track_regex: str = SettingsField("", title="Track Regex") + track_names: list[str] = SettingsField("", title="Track Names") class CollectClipEffectsModel(BaseSettingsModel):