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; }