diff --git a/client/ayon_nuke/plugins/load/load_camera.py b/client/ayon_nuke/plugins/load/load_camera.py index efe7222ca8..48f23bcce9 100644 --- a/client/ayon_nuke/plugins/load/load_camera.py +++ b/client/ayon_nuke/plugins/load/load_camera.py @@ -146,10 +146,14 @@ def update(self, container, context): # getting file path file = get_representation_path(repre_entity).replace("\\", "/") - with maintained_selection(): - camera_node = container["node"] - camera_node['selected'].setValue(True) - + camera_node = container["node"] + selected = camera_node["selected"] + + with maintained_selection( + # exclude from selection, since we will be recreating the node + # which will invalidate the reference to the object in memory + exclude_nodes=[camera_node], + ): # collect input output dependencies dependencies = camera_node.dependencies() dependent = camera_node.dependent() @@ -161,11 +165,12 @@ def update(self, container, context): # not adding animation keys properly xpos = camera_node.xpos() ypos = camera_node.ypos() + camera_node.selectOnly() nuke.nodeCopy("%clipboard%") - camera_name = camera_node.name() nuke.delete(camera_node) - nuke.nodePaste("%clipboard%") - camera_node = nuke.toNode(camera_name) + camera_node = nuke.nodePaste("%clipboard%") + if not camera_node: + raise RuntimeError("Failed to paste camera node") camera_node.setXYpos(xpos, ypos) # link to original input nodes @@ -178,6 +183,8 @@ def update(self, container, context): if camera_node is dpcy), 0) d.setInput(index, camera_node) + camera_node["selected"].setValue(selected) + # color node by correct color by actual version self.node_version_color( context["project"]["name"], version_entity, camera_node