From baf60646730e34d8d9965472b8923d71144e1d30 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 17 Mar 2023 07:39:08 +0000 Subject: [PATCH] Validate against same named nodes in different hierarchies. --- .../publish/validate_arnold_scene_source.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/maya/plugins/publish/validate_arnold_scene_source.py b/openpype/hosts/maya/plugins/publish/validate_arnold_scene_source.py index 2a7eabe285..8f443f6963 100644 --- a/openpype/hosts/maya/plugins/publish/validate_arnold_scene_source.py +++ b/openpype/hosts/maya/plugins/publish/validate_arnold_scene_source.py @@ -26,6 +26,7 @@ class ValidateArnoldSceneSource(pyblish.api.InstancePlugin): ungrouped_nodes = [] nodes_by_name = {} parents = [] + same_named_nodes = [] for node in nodes: node_split = node.split("|") if len(node_split) == 2: @@ -35,7 +36,21 @@ class ValidateArnoldSceneSource(pyblish.api.InstancePlugin): if parent: parents.append(parent) - nodes_by_name[node_split[-1].split(":")[-1]] = node + node_name = node.rsplit("|", 1)[-1].rsplit(":", 1)[-1] + + # Check for same same nodes, which can happen in different + # hierarchies. + if node_name in nodes_by_name: + same_named_nodes.append((node, nodes_by_name[node_name])) + + nodes_by_name[node_name] = node + + if same_named_nodes: + raise PublishValidationError( + "Found nodes with the same name:\n{}".format( + "\n".join(["{}".format(n) for n in same_named_nodes]) + ) + ) return ungrouped_nodes, nodes_by_name, parents