void FNiagaraEditor::DeleteSelectedDuplicatableNodes() { TSharedPtr<SGraphEditor> CurrentGraphEditor = NodeGraphEditorPtr.Pin(); if (!CurrentGraphEditor.IsValid()) { return; } const FGraphPanelSelectionSet OldSelectedNodes = CurrentGraphEditor->GetSelectedNodes(); CurrentGraphEditor->ClearSelectionSet(); for (FGraphPanelSelectionSet::TConstIterator SelectedIter(OldSelectedNodes); SelectedIter; ++SelectedIter) { UEdGraphNode* Node = Cast<UEdGraphNode>(*SelectedIter); if (Node && Node->CanDuplicateNode()) { CurrentGraphEditor->SetNodeSelection(Node, true); } } // Delete the duplicatable nodes DeleteSelectedNodes(); CurrentGraphEditor->ClearSelectionSet(); for (FGraphPanelSelectionSet::TConstIterator SelectedIter(OldSelectedNodes); SelectedIter; ++SelectedIter) { if (UEdGraphNode* Node = Cast<UEdGraphNode>(*SelectedIter)) { CurrentGraphEditor->SetNodeSelection(Node, true); } } }
bool FSoundCueEditor::CanCopyNodes() const { // If any of the nodes can be duplicated then we should allow copying const FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); for (FGraphPanelSelectionSet::TConstIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) { UEdGraphNode* Node = Cast<UEdGraphNode>(*SelectedIter); if ((Node != NULL) && Node->CanDuplicateNode()) { return true; } } return false; }
bool FNiagaraEditor::CanCopyNodes() const { // If any of the nodes can be duplicated then we should allow copying TSharedPtr<SGraphEditor> CurrentGraphEditor = NodeGraphEditorPtr.Pin(); const FGraphPanelSelectionSet SelectedNodes = CurrentGraphEditor->GetSelectedNodes(); for (FGraphPanelSelectionSet::TConstIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) { UEdGraphNode* Node = Cast<UEdGraphNode>(*SelectedIter); if (Node && Node->CanDuplicateNode()) { return true; } } return false; }
void FSoundCueEditor::DeleteSelectedDuplicatableNodes() { // Cache off the old selection const FGraphPanelSelectionSet OldSelectedNodes = GetSelectedNodes(); // Clear the selection and only select the nodes that can be duplicated FGraphPanelSelectionSet RemainingNodes; SoundCueGraphEditor->ClearSelectionSet(); for (FGraphPanelSelectionSet::TConstIterator SelectedIter(OldSelectedNodes); SelectedIter; ++SelectedIter) { UEdGraphNode* Node = Cast<UEdGraphNode>(*SelectedIter); if ((Node != NULL) && Node->CanDuplicateNode()) { SoundCueGraphEditor->SetNodeSelection(Node, true); } else { RemainingNodes.Add(Node); } } // Delete the duplicatable nodes DeleteSelectedNodes(); // Reselect whatever's left from the original selection after the deletion SoundCueGraphEditor->ClearSelectionSet(); for (FGraphPanelSelectionSet::TConstIterator SelectedIter(RemainingNodes); SelectedIter; ++SelectedIter) { if (UEdGraphNode* Node = Cast<UEdGraphNode>(*SelectedIter)) { SoundCueGraphEditor->SetNodeSelection(Node, true); } } }