From 3cdc0560ae3179a5264ceaf8af93140d6d579141 Mon Sep 17 00:00:00 2001 From: Tillman Staffen Date: Tue, 27 Jan 2026 10:24:18 +0100 Subject: [PATCH] clouds, CLOUDS, CLOOOOOOUUUUUDS! --- .vs/VSWorkspaceState.json | 6 ++++++ .vs/slnx.sqlite | Bin 0 -> 90112 bytes Unreal/Content/Movies/Clouds.mp4 | 4 ++-- .../RealtimeAPI/AvatarCoreAIRealtime.cpp | 9 +++++++++ .../Public/RealtimeAPI/AvatarCoreAIRealtime.h | 4 ++++ .../Debug/Pages/W_DebugAvatarCoreAI.uasset | 4 ++-- 6 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/slnx.sqlite diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..6b61141 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..a70d92592e1feaeeb8cdf322d7673ca4446dd037 GIT binary patch literal 90112 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 aKmZ5;0U!VbfB+Bx0zd!=0D%We;C}%#`8GEI literal 0 HcmV?d00001 diff --git a/Unreal/Content/Movies/Clouds.mp4 b/Unreal/Content/Movies/Clouds.mp4 index 28329a0..599949d 100644 --- a/Unreal/Content/Movies/Clouds.mp4 +++ b/Unreal/Content/Movies/Clouds.mp4 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f02f444fe5d587466424f6f758a63a564f4e78b028223ef005f940b794ea32b5 -size 281319924 +oid sha256:31783891a9d22dc0eaf446a8bf3a8142ee2f84b141fc8586e53c1accb2db54b2 +size 157622613 diff --git a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/RealtimeAPI/AvatarCoreAIRealtime.cpp b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/RealtimeAPI/AvatarCoreAIRealtime.cpp index b276989..4349741 100644 --- a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/RealtimeAPI/AvatarCoreAIRealtime.cpp +++ b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/RealtimeAPI/AvatarCoreAIRealtime.cpp @@ -686,6 +686,15 @@ void UAvatarCoreAIRealtime::WebSocketSendAudioChunk(FString Base64AudioChunk) } } +void UAvatarCoreAIRealtime::DebugDisconnect(int32 DisconnectCode) +{ + if (Socket == nullptr) { + BroadcastAIError("Trying to send something over WebSocket but Websocket is not initialized.", EAvatarCoreAIError::NotInitialized); + return; + } + Socket->Close(DisconnectCode); +} + FString UAvatarCoreAIRealtime::GetRoleAsString(EOpenAIRoleType role) { diff --git a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h index cbc4df2..be814f5 100644 --- a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h +++ b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h @@ -191,6 +191,10 @@ public: void OnSTTAudioChunk(TArray AudioChunks); void WebSocketSendAudioChunk(FString Base64AudioChunk); + //Simulate a disconnect with a disconnect code, to simulate server side socket closing + UFUNCTION(BlueprintCallable, Category = "AvatarCore AI|RealtimeAPI") + void DebugDisconnect(int32 DisconnectCode); + private: URealtimeAPIConfig* RealtimeConfig; diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset index e8f50a6..31218da 100644 --- a/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset +++ b/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5d7ed7cde4efecb4c39245638a0f971b4c8457dfa576f2b7f8e8a6071177ef5 -size 154135 +oid sha256:a4ff71955050f79437d19dbc0e849bd9bc0d43f134888b43b1db5971c02fd64e +size 173618