Asset Saving
Introduction
Automatic saving of custom assets
Before saving, the read-only status of read-only files is removed. Designed for Perforce to prevent crashes caused by assets being unwritable
Implementation
UFUNCTION(BlueprintCallable)
static bool SaveLoadedAsset(UObject* AssetObject, FString AssetPath);
bool UMyBlueprintFunctionLibrary::SaveLoadedAsset(UObject* AssetObject, FString AssetPath)
{
if(!AssetObject || AssetPath.IsEmpty())return false;
UPackage* Package = AssetObject->GetPackage();
if(!Package)
{
Package = CreatePackage(*AssetPath);
}
if(Package)
{
Package->FullyLoad();
Package->SetDirtyFlag(true);
FAssetRegistryModule::AssetCreated(AssetObject);
const FString PackageFileName = FPackageName::LongPackageNameToFilename(Package->GetPathName(), FPackageName::GetAssetPackageExtension());
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
PlatformFile.SetReadOnly(*PackageFileName, false);
FSavePackageArgs SavePackageArgs;
return UPackage::SavePackage(Package, AssetObject, *PackageFileName, SavePackageArgs);
}
return false;
}