void FClassBrowseHelper::OnAssetAdded(const class FAssetData& AssetData) { TSharedPtr<FClassDataNode> Node = CreateClassDataNode(AssetData); TSharedPtr<FClassDataNode> ParentNode; if (Node.IsValid()) { ParentNode = FindBaseClassNode(RootNode, Node->ParentClassName); } if (ParentNode.IsValid()) { ParentNode->SubNodes.Add(Node); Node->ParentNode = ParentNode; } }
void FClassBrowseHelper::BuildClassGraph() { UClass* RootNodeClass = UBTNode::StaticClass(); TArray<TSharedPtr<FClassDataNode> > NodeList; RootNode.Reset(); // gather all native classes for (TObjectIterator<UClass> It; It; ++It) { UClass* TestClass = *It; if (TestClass->HasAnyClassFlags(CLASS_Native) && TestClass->IsChildOf(RootNodeClass)) { TSharedPtr<FClassDataNode> NewNode = MakeShareable(new FClassDataNode); NewNode->ParentClassName = TestClass->GetSuperClass()->GetName(); FClassData NewData(TestClass); NewNode->Data = NewData; if (TestClass == RootNodeClass) { RootNode = NewNode; } NodeList.Add(NewNode); } } // gather all blueprints FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry")); TArray<FAssetData> BlueprintList; FARFilter Filter; Filter.ClassNames.Add(UBlueprint::StaticClass()->GetFName()); AssetRegistryModule.Get().GetAssets(Filter, BlueprintList); for (int32 i = 0; i < BlueprintList.Num(); i++) { TSharedPtr<FClassDataNode> NewNode = CreateClassDataNode(BlueprintList[i]); NodeList.Add(NewNode); } // build class tree AddClassGraphChildren(RootNode, NodeList); }
void FGraphNodeClassHelper::OnAssetAdded(const class FAssetData& AssetData) { TSharedPtr<FGraphNodeClassNode> Node = CreateClassDataNode(AssetData); TSharedPtr<FGraphNodeClassNode> ParentNode; if (Node.IsValid()) { ParentNode = FindBaseClassNode(RootNode, Node->ParentClassName); if (!IsPackageSaved(AssetData.PackageName)) { UnknownPackages.AddUnique(AssetData.PackageName); } else { const int32 PrevListCount = UnknownPackages.Num(); UnknownPackages.RemoveSingleSwap(AssetData.PackageName); if (UnknownPackages.Num() != PrevListCount) { OnPackageListUpdated.Broadcast(); } } } if (ParentNode.IsValid()) { ParentNode->AddUniqueSubNode(Node); Node->ParentNode = ParentNode; } FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry")); if (!AssetRegistryModule.Get().IsLoadingAssets()) { UpdateAvailableBlueprintClasses(); } }
void FGraphNodeClassHelper::BuildClassGraph() { TArray<TSharedPtr<FGraphNodeClassNode> > NodeList; TArray<UClass*> HideParentList; RootNode.Reset(); // gather all native classes for (TObjectIterator<UClass> It; It; ++It) { UClass* TestClass = *It; if (TestClass->HasAnyClassFlags(CLASS_Native) && TestClass->IsChildOf(RootNodeClass)) { TSharedPtr<FGraphNodeClassNode> NewNode = MakeShareable(new FGraphNodeClassNode); NewNode->ParentClassName = TestClass->GetSuperClass()->GetName(); FString DeprecatedMessage = GetDeprecationMessage(TestClass); FGraphNodeClassData NewData(TestClass, DeprecatedMessage); NewData.bHideParent = IsHidingParentClass(TestClass); if (NewData.bHideParent) { HideParentList.Add(TestClass->GetSuperClass()); } NewData.bIsHidden = IsHidingClass(TestClass); NewNode->Data = NewData; if (TestClass == RootNodeClass) { RootNode = NewNode; } NodeList.Add(NewNode); } } // find all hidden parent classes for (int32 i = 0; i < NodeList.Num(); i++) { TSharedPtr<FGraphNodeClassNode> TestNode = NodeList[i]; if (HideParentList.Contains(TestNode->Data.GetClass())) { TestNode->Data.bIsHidden = true; } } // gather all blueprints FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry")); TArray<FAssetData> BlueprintList; FARFilter Filter; Filter.ClassNames.Add(UBlueprint::StaticClass()->GetFName()); AssetRegistryModule.Get().GetAssets(Filter, BlueprintList); for (int32 i = 0; i < BlueprintList.Num(); i++) { TSharedPtr<FGraphNodeClassNode> NewNode = CreateClassDataNode(BlueprintList[i]); NodeList.Add(NewNode); } // build class tree AddClassGraphChildren(RootNode, NodeList); }