From da0224a3383ef392277d4904ff9d9a55e823ffd4 Mon Sep 17 00:00:00 2001 From: Tillman Staffen Date: Tue, 27 Jan 2026 16:15:20 +0100 Subject: [PATCH] [RECOMPILE] Added Debug Wipe last cached/played audio clip --- .../Debug/Pages/W_DebugAvatarCoreTTS.uasset | 4 +- .../AvatarCore_TTS/Private/TTSManagerBase.cpp | 40 +++++++++++++++++++ .../AvatarCore_TTS/Public/TTSManagerBase.h | 6 ++- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreTTS.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreTTS.uasset index 4323b64..ddca0e6 100644 --- a/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreTTS.uasset +++ b/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreTTS.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af9561a39ab354950de4b6a2d46c56fcf86de69862297785f6a09df5f294347f -size 248164 +oid sha256:dd422da8a67086a14e50b8cb997771f04f8c9ca665dd73c645b98c19d3147d92 +size 267705 diff --git a/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Private/TTSManagerBase.cpp b/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Private/TTSManagerBase.cpp index 7b6d547..2854062 100644 --- a/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Private/TTSManagerBase.cpp +++ b/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Private/TTSManagerBase.cpp @@ -298,6 +298,46 @@ void UTTSManagerBase::WipeCache() } } +void UTTSManagerBase::WipeLastCachedFile() +{ + IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile(); + FString CacheDir = GetCacheDirectory(); + if (!PlatformFile.DirectoryExists(*CacheDir)) + { + UE_LOG(LogTemp, Warning, TEXT("Directory does not exist: %s - Cache disable?"), *CacheDir); + return; + } + + TArray FileNames; + const FString Wildcard = FPaths::Combine(CacheDir, TEXT("*")); + IFileManager::Get().FindFiles(FileNames, *Wildcard, /*Files=*/true, /*Directories=*/false); + + if (FileNames.Num() == 0) + { + UE_LOG(LogTemp, Warning, TEXT("No files in dir: %s - Cache disable?"), *CacheDir); + return; + } + + FDateTime NewestTimestamp = FDateTime::MinValue(); + FString NewestFullPath; + for (const FString& FileName : FileNames) + { + const FString FullPath = FPaths::Combine(CacheDir, FileName); + const FDateTime Timestamp = IFileManager::Get().GetTimeStamp(*FullPath); + if (Timestamp > NewestTimestamp) + { + NewestTimestamp = Timestamp; + NewestFullPath = FullPath; + } + } + + if (!NewestFullPath.IsEmpty() && PlatformFile.FileExists(*NewestFullPath)) + { + IFileManager::Get().Delete(*NewestFullPath, /*RequireExists=*/false, /*EvenReadOnly=*/true, /*Quiet=*/true); + UE_LOG(LogTemp, Warning, TEXT("File deleted: %s"), *NewestFullPath); + } +} + void UTTSManagerBase::OnTTSManagerFinished() { // Reset procedural sound wave diff --git a/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Public/TTSManagerBase.h b/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Public/TTSManagerBase.h index 9b88cf4..cebce8e 100644 --- a/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Public/TTSManagerBase.h +++ b/Unreal/Plugins/AvatarCore_TTS/Source/AvatarCore_TTS/Public/TTSManagerBase.h @@ -158,10 +158,14 @@ public: UFUNCTION(BlueprintCallable, Category = "AvatarCoreTTS|Cache") void PreCacheSpeeches(TArray Sentences); - // Wipe the complete audio cache - latest played audio clip will always have the latest change date on disk (if you want to delete audio more surgically) + // Wipe the complete audio cache UFUNCTION(BlueprintCallable, Category = "AvatarCoreTTS|Cache") static void WipeCache(); + // Delete the last played/cached audio file + UFUNCTION(BlueprintCallable, Category = "AvatarCoreTTS|Cache") + void WipeLastCachedFile(); + // Manager has finished what he was doing void OnTTSManagerFinished();