FFindHeadersToInclude(FGatherConvertedClassDependencies& InDependencies) : FGatherConvertedClassDependenciesHelperBase(InDependencies) { FindReferences(Dependencies.GetActualStruct()); // special case - literal enum UBlueprintGeneratedClass* BPGC = Cast<UBlueprintGeneratedClass>(Dependencies.GetActualStruct()); UBlueprint* BP = BPGC ? Cast<UBlueprint>(BPGC->ClassGeneratedBy) : nullptr; if (BP) { TArray<UEdGraph*> Graphs; BP->GetAllGraphs(Graphs); for (UEdGraph* Graph : Graphs) { if (Graph) { TArray<UK2Node_EnumLiteral*> LiteralEnumNodes; Graph->GetNodesOfClass<UK2Node_EnumLiteral>(LiteralEnumNodes); for (UK2Node_EnumLiteral* LiteralEnumNode : LiteralEnumNodes) { UEnum* Enum = LiteralEnumNode ? LiteralEnumNode->Enum : nullptr; IncludeTheHeaderInBody(Enum); } } } } // Include classes of native subobjects if (BPGC) { UClass* NativeSuperClass = BPGC->GetSuperClass(); for (; NativeSuperClass && !NativeSuperClass->HasAnyClassFlags(CLASS_Native); NativeSuperClass = NativeSuperClass->GetSuperClass()) {} UObject* NativeCDO = NativeSuperClass ? NativeSuperClass->GetDefaultObject(false) : nullptr; if (NativeCDO) { TArray<UObject*> DefaultSubobjects; NativeCDO->GetDefaultSubobjects(DefaultSubobjects); for (UObject* DefaultSubobject : DefaultSubobjects) { IncludeTheHeaderInBody(DefaultSubobject ? DefaultSubobject->GetClass() : nullptr); } } } }
UObject* UK2Node_Event::GetJumpTargetForDoubleClick() const { if(EventSignatureClass != NULL && EventSignatureClass->ClassGeneratedBy != NULL && EventSignatureClass->ClassGeneratedBy->IsA(UBlueprint::StaticClass())) { UBlueprint* Blueprint = CastChecked<UBlueprint>(EventSignatureClass->ClassGeneratedBy); TArray<UEdGraph*> Graphs; Blueprint->GetAllGraphs(Graphs); for(auto It(Graphs.CreateConstIterator()); It; It++) { if((*It)->GetFName() == EventSignatureName) { return *It; } } } return NULL; }
void UEditorParentPlayerListObj::InitialiseFromBlueprint(UAnimBlueprint* Blueprint) { AnimBlueprint = Blueprint; Overrides.Empty(); TArray<UBlueprint*> BlueprintHierarchy; Blueprint->GetBlueprintHierarchyFromClass(Blueprint->GetAnimBlueprintGeneratedClass(), BlueprintHierarchy); // Search from 1 as 0 is this class and we're looking for it's parents for(int32 BPIdx = 1 ; BPIdx < BlueprintHierarchy.Num() ; ++BPIdx) { UBlueprint* CurrBP = BlueprintHierarchy[BPIdx]; TArray<UEdGraph*> Graphs; CurrBP->GetAllGraphs(Graphs); for(UEdGraph* Graph : Graphs) { for(UEdGraphNode* Node : Graph->Nodes) { UAnimGraphNode_Base* AnimNode = Cast<UAnimGraphNode_Base>(Node); if(AnimNode && AnimNode->GetAnimationAsset()) { FAnimParentNodeAssetOverride& Override = AddOverridableNode(AnimNode); // Check the blueprint for saved overrides FAnimParentNodeAssetOverride* SavedOverride = AnimBlueprint->GetAssetOverrideForNode(Override.ParentNodeGuid); if(SavedOverride) { Override.NewAsset = SavedOverride->NewAsset; } } } } } }