Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Load modules
- FAssetRegistryModule& AssetRegistryModule = FModuleManager::GetModuleChecked<FAssetRegistryModule>("AssetRegistry");
- FAssetToolsModule& AssetToolsModule = FModuleManager::LoadModuleChecked<FAssetToolsModule>("AssetTools");
- // Get current sequencer asset
- FAssetData XAssetData = AssetRegistryModule.Get().GetAssetByObjectPath(TEXT("/Game/NewLevelSequence.NewLevelSequence"));
- UObject* LevelSequencerAsset = XAssetData.GetAsset();
- if (LevelSequencerAsset != nullptr)
- {
- const FString PackagePath = FPackageName::GetLongPackagePath(LevelSequencerAsset->GetOutermost()->GetName());
- if (!PackagePath.IsEmpty())
- {
- // Duplicate current level sequencer
- UObject * ClonedLevelSequencer = AssetToolsModule.Get().DuplicateAsset(
- FString("StupidClone"),
- PackagePath,
- LevelSequencerAsset
- );
- if (ClonedLevelSequencer != nullptr)
- {
- // Update engine registry
- FAssetRegistryModule::AssetCreated(ClonedLevelSequencer);
- ClonedLevelSequencer->MarkPackageDirty();
- // Save cloned sequencer
- FString PackagePath = FString("/Game/StupidClone");
- UPackage* ClonePackage = CreatePackage(NULL, *PackagePath);
- if (ClonePackage != nullptr && ClonePackage->IsValidLowLevel())
- {
- FString PackageFileName = FPackageName::LongPackageNameToFilename(PackagePath, FPackageName::GetAssetPackageExtension());
- if (UPackage::SavePackage(ClonePackage, ClonedLevelSequencer, RF_Public | RF_Standalone, *PackageFileName, GError, nullptr, false, true, SAVE_NoError))
- {
- ClonePackage->PostEditChange();
- ClonePackage->MarkAsFullyLoaded();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement