void USoundClassGraph::AddDroppedSoundClasses(const TArray<USoundClass*>& SoundClasses, int32 NodePosX, int32 NodePosY) { Modify(); for (int32 ClassIndex = 0; ClassIndex < SoundClasses.Num(); ClassIndex++) { NodePosY += ConstructNodes(SoundClasses[ClassIndex], NodePosX, NodePosY); } NotifyGraphChanged(); }
void USoundClassGraph::RebuildGraph() { check(RootSoundClass); Modify(false); RemoveAllNodes(); ConstructNodes(RootSoundClass, 0, 0); NotifyGraphChanged(); }
void USoundClassGraph::RebuildGraph() { check(RootSoundClass); // Don't allow initial graph rebuild to affect package dirty state; remember current state... UPackage* Package = GetOutermost(); const bool bIsDirty = Package->IsDirty(); Modify(); RemoveAllNodes(); ConstructNodes(RootSoundClass, 0, 0); NotifyGraphChanged(); // ...and restore it Package->SetDirtyFlag(bIsDirty); }
void USoundClassGraph::RefreshGraphLinks() { Modify(); for (int32 NodeIndex = 0; NodeIndex < Nodes.Num(); NodeIndex++) { USoundClassGraphNode* Node = CastChecked<USoundClassGraphNode>(Nodes[NodeIndex]); if (!Node->CheckRepresentsSoundClass()) { UEdGraphPin* ChildPin = Node->GetChildPin(); Node->Modify(); ChildPin->BreakAllPinLinks(); for (int32 ChildIndex = 0; ChildIndex < Node->SoundClass->ChildClasses.Num(); ChildIndex++) { USoundClass* ChildClass = Node->SoundClass->ChildClasses[ChildIndex]; if (ChildClass) { USoundClassGraphNode* ChildNode = FindExistingNode(ChildClass); if (!ChildNode) { // New Child not yet represented on graph ConstructNodes(ChildClass, Node->NodePosX+400, Node->NodePosY); ChildNode = FindExistingNode(ChildClass); } ChildPin->MakeLinkTo(ChildNode->GetParentPin()); } } Node->PostEditChange(); } } NotifyGraphChanged(); }
// default graph construction void Graph::ConstructGraph() { ConstructNodes(); ConstructEdges(); }