UPaperFlipbook* UHGGifFactory::CreateFlipBook(const TArray<UPaperSprite*>& AllSprites, FName BaseName) { if (AllSprites.Num() == 0) return nullptr; const FString& FlipbookName = BaseName.ToString(); TArray<UPaperSprite*> Sprites = AllSprites; // Not Reference, for Save Pacakge UPackage* OuterPackage = Sprites[0]->GetOutermost(); const FString SpritePathName = OuterPackage->GetPathName(); const FString LongPackagePath = FPackageName::GetLongPackagePath(OuterPackage->GetPathName()); UPaperFlipbookFactory* FlipbookFactory = NewObject<UPaperFlipbookFactory>(); for (UPaperSprite* Sprite : Sprites) { if (Sprite != nullptr) { FPaperFlipbookKeyFrame* KeyFrame = new (FlipbookFactory->KeyFrames) FPaperFlipbookKeyFrame(); KeyFrame->Sprite = Sprite; KeyFrame->FrameRun = 1; } } const FString NewFlipBookDefaultPath = LongPackagePath + TEXT("/") + FlipbookName; FString DefaultSuffix; FString AssetName; FString PackageName; FAssetToolsModule& AssetToolsModule = FModuleManager::Get().LoadModuleChecked<FAssetToolsModule>("AssetTools"); AssetToolsModule.Get().CreateUniqueAssetName(NewFlipBookDefaultPath, DefaultSuffix, /*out*/ PackageName, /*out*/ AssetName); const FString PackagePath = FPackageName::GetLongPackagePath(PackageName); TArray<UObject*> ObjectsToSync; UPaperFlipbook* NewFlipBook = nullptr; NewFlipBook = Cast<UPaperFlipbook>(AssetToolsModule.Get().CreateAsset(AssetName, PackagePath, UPaperFlipbook::StaticClass(), FlipbookFactory)); if (NewFlipBook) { ObjectsToSync.Add(NewFlipBook); FContentBrowserModule& ContentBrowserModule = FModuleManager::LoadModuleChecked<FContentBrowserModule>("ContentBrowser"); ContentBrowserModule.Get().SyncBrowserToAssets(ObjectsToSync); } return NewFlipBook; }
UPackage* FHierarchicalLODUtilities::CreateOrRetrieveLevelHLODPackage(ULevel* InLevel) { checkf(InLevel != nullptr, TEXT("Invalid Level supplied")); UPackage* HLODPackage = nullptr; UPackage* LevelOuterMost = InLevel->GetOutermost(); const FString PathName = FPackageName::GetLongPackagePath(LevelOuterMost->GetPathName()); const FString BaseName = FPackageName::GetShortName(LevelOuterMost->GetPathName()); const FString HLODLevelPackageName = FString::Printf(TEXT("%s/HLOD/%s_HLOD"), *PathName, *BaseName); HLODPackage = CreatePackage(NULL, *HLODLevelPackageName); HLODPackage->FullyLoad(); HLODPackage->Modify(); // Target level filename const FString HLODLevelFileName = FPackageName::LongPackageNameToFilename(HLODLevelPackageName); // This is a hack to avoid save file dialog when we will be saving HLOD map package HLODPackage->FileName = FName(*HLODLevelFileName); return HLODPackage; }