From ca37fe4c2481acef1b81dcc96d6d18265b356cff Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Fri, 12 Jan 2024 17:14:44 +0800 Subject: [PATCH] vault backup: 2024-01-12 17:14:44 --- .../Editor/FBXAnimation导入&导出逻辑.md | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/03-UnrealEngine/Editor/FBXAnimation导入&导出逻辑.md b/03-UnrealEngine/Editor/FBXAnimation导入&导出逻辑.md index c2c5db9..49954e2 100644 --- a/03-UnrealEngine/Editor/FBXAnimation导入&导出逻辑.md +++ b/03-UnrealEngine/Editor/FBXAnimation导入&导出逻辑.md @@ -171,4 +171,32 @@ void FFbxExporter::CorrectAnimTrackInterpolation( TArray& BoneNodes, F ``` ## 导入Curve相关逻辑 -UnFbx::FFbxImporter::ImportCurveToAnimSequence() => UnFbx::FFbxImporter::ImportCurve() \ No newline at end of file +UnFbx::FFbxImporter::ImportCurveToAnimSequence() => UnFbx::FFbxImporter::ImportCurve() + +## 异步机制改进 +```c++ +void URuntimeAudioImporterLibrary::ImportAudioFromFile(const FString& FilePath, ERuntimeAudioFormat AudioFormat) +{ + AsyncTask(ENamedThreads::AnyBackgroundHiPriTask, [WeakThis = TWeakObjectPtr(this), FilePath, AudioFormat]() mutable + { + if (!WeakThis.IsValid()) + { UE_LOG(LogRuntimeAudioImporter, Error, TEXT("Failed to import audio from file '%s' because the RuntimeAudioImporterLibrary object has been destroyed"), *FilePath); + return; + } + FGCObjectScopeGuard Guard(WeakThis.Get()); + + if (!FPaths::FileExists(FilePath)) + { WeakThis->OnResult_Internal(nullptr, ERuntimeImportStatus::AudioDoesNotExist); + return; + } + AudioFormat = AudioFormat == ERuntimeAudioFormat::Auto ? GetAudioFormat(FilePath) : AudioFormat; + AudioFormat = AudioFormat == ERuntimeAudioFormat::Invalid ? ERuntimeAudioFormat::Auto : AudioFormat; + + TArray64 AudioBuffer; + if (!LoadAudioFileToArray(AudioBuffer, *FilePath)) + { WeakThis->OnResult_Internal(nullptr, ERuntimeImportStatus::LoadFileToArrayError); + return; + } + WeakThis->ImportAudioFromBuffer(MoveTemp(AudioBuffer), AudioFormat); + });} +``` \ No newline at end of file