TSharedPtr<FClassDataNode> FClassBrowseHelper::CreateClassDataNode(const class FAssetData& AssetData) { TSharedPtr<FClassDataNode> Node; const FString* GeneratedClassname = AssetData.TagsAndValues.Find("GeneratedClass"); const FString* ParentClassname = AssetData.TagsAndValues.Find("ParentClass"); if (GeneratedClassname && ParentClassname) { FString AssetClassName = *GeneratedClassname; UObject* Outer1(NULL); ResolveName(Outer1, AssetClassName, false, false); FString AssetParentClassName = *ParentClassname; UObject* Outer2(NULL); ResolveName(Outer2, AssetParentClassName, false, false); Node = MakeShareable(new FClassDataNode); Node->ParentClassName = AssetParentClassName; FClassData NewData(AssetData.AssetName.ToString(), AssetData.PackageName.ToString(), AssetClassName); Node->Data = NewData; } return Node; }
TSharedPtr<FGraphNodeClassNode> FGraphNodeClassHelper::CreateClassDataNode(const class FAssetData& AssetData) { TSharedPtr<FGraphNodeClassNode> Node; const FString* GeneratedClassname = AssetData.TagsAndValues.Find("GeneratedClass"); const FString* ParentClassname = AssetData.TagsAndValues.Find("ParentClass"); if (GeneratedClassname && ParentClassname) { FString AssetClassName = *GeneratedClassname; UObject* Outer1(NULL); ResolveName(Outer1, AssetClassName, false, false); FString AssetParentClassName = *ParentClassname; UObject* Outer2(NULL); ResolveName(Outer2, AssetParentClassName, false, false); Node = MakeShareable(new FGraphNodeClassNode); Node->ParentClassName = AssetParentClassName; UObject* AssetOb = AssetData.IsAssetLoaded() ? AssetData.GetAsset() : NULL; UBlueprint* AssetBP = Cast<UBlueprint>(AssetOb); UClass* AssetClass = AssetBP ? *AssetBP->GeneratedClass : AssetOb ? AssetOb->GetClass() : NULL; FGraphNodeClassData NewData(AssetData.AssetName.ToString(), AssetData.PackageName.ToString(), AssetClassName, AssetClass); Node->Data = NewData; } return Node; }