diff --git a/Unreal/Content/Project/BP/BP_Project_Manager.uasset b/Unreal/Content/Project/BP/BP_Project_Manager.uasset index 39e168b..733bee4 100644 --- a/Unreal/Content/Project/BP/BP_Project_Manager.uasset +++ b/Unreal/Content/Project/BP/BP_Project_Manager.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53493407bbacab510409ca64307005a786230ae95b29d856f959820568555ab5 -size 2171604 +oid sha256:861da89d0204fabc022dc82b117b9eaf67b68efadea0693d7e3118ae4996618c +size 2184809 diff --git a/Unreal/Content/Project/BP/Config/DT_ProjectStates.uasset b/Unreal/Content/Project/BP/Config/DT_ProjectStates.uasset deleted file mode 100644 index c6e208e..0000000 --- a/Unreal/Content/Project/BP/Config/DT_ProjectStates.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8f05b42771a59afcde10a288f9da6aeac03fe97d9aad772ba60ab7e0a2fc0460 -size 7120 diff --git a/Unreal/Content/Project/BP/Config/DT_StateAdjustmentConfig.uasset b/Unreal/Content/Project/BP/Config/DT_StateAdjustmentConfig.uasset deleted file mode 100644 index a36b10e..0000000 --- a/Unreal/Content/Project/BP/Config/DT_StateAdjustmentConfig.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:724340d89a63faf162810ea293b77b06dbbe0da3a807ea8d97149dc9f9747cb7 -size 6937 diff --git a/Unreal/Content/Project/BP/EnumsAndStructs/S_ActionsToTake.uasset b/Unreal/Content/Project/BP/EnumsAndStructs/S_ActionsToTake.uasset deleted file mode 100644 index d1b1b38..0000000 --- a/Unreal/Content/Project/BP/EnumsAndStructs/S_ActionsToTake.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3f65867be0a4acabc29f60930f4b57a41848d1233a8842f7aadcb48029bfb1b5 -size 4102 diff --git a/Unreal/Content/Project/BP/EnumsAndStructs/S_WidgetConfigs.uasset b/Unreal/Content/Project/BP/EnumsAndStructs/S_WidgetConfigs.uasset new file mode 100644 index 0000000..dea59c5 --- /dev/null +++ b/Unreal/Content/Project/BP/EnumsAndStructs/S_WidgetConfigs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0700661a05b436a10eb2d24e0479dfd2f19f3a409516df8f8f12de4d1df0a0e2 +size 13547 diff --git a/Unreal/Content/Project/BP/Environments/BP_Environment_FogWithRing.uasset b/Unreal/Content/Project/BP/Environments/BP_Environment_FogWithRing.uasset index 617eb2f..8f4afe4 100644 --- a/Unreal/Content/Project/BP/Environments/BP_Environment_FogWithRing.uasset +++ b/Unreal/Content/Project/BP/Environments/BP_Environment_FogWithRing.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bdbd928ea7039839f499039930495618b1ee1b7308a61162c028e52df2daf572 -size 1210649 +oid sha256:92127f1652d68a87a3825cc3b5d051781236af07e3c8f251dc37512e613f67f8 +size 1239811 diff --git a/Unreal/Content/Project/BP/Modes/DA_Mode_Base.uasset b/Unreal/Content/Project/BP/Modes/DA_Mode_Base.uasset index 7310b6c..58f6361 100644 --- a/Unreal/Content/Project/BP/Modes/DA_Mode_Base.uasset +++ b/Unreal/Content/Project/BP/Modes/DA_Mode_Base.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e4b2f4549631704e8ae916fe86cfd5b8caf904d81fffb902622e33061f3fd15 -size 4581 +oid sha256:15245f22c13058f69d44256ca724fb41242a98cbcf8479c3b24d092fbacc9e11 +size 4005 diff --git a/Unreal/Content/Project/BP/Modes/Data/PDA_Mode.uasset b/Unreal/Content/Project/BP/Modes/Data/PDA_Mode.uasset deleted file mode 100644 index 46c721f..0000000 --- a/Unreal/Content/Project/BP/Modes/Data/PDA_Mode.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98b19899afa035cbed6b0dca5b5034aec340bc28cbf8880d95202419887c2f73 -size 11030 diff --git a/Unreal/Content/Project/BP/Modes/Data/S_AvatarInstructions.uasset b/Unreal/Content/Project/BP/Modes/Data/S_AvatarInstructions.uasset deleted file mode 100644 index 6ddb524..0000000 --- a/Unreal/Content/Project/BP/Modes/Data/S_AvatarInstructions.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c086a7f1f3b03aa10885d9efa6199d5e30983a6b620971de183b9b956757e848 -size 6160 diff --git a/Unreal/Content/Project/BP/Modes/Data/S_ProjectInstructions.uasset b/Unreal/Content/Project/BP/Modes/Data/S_ProjectInstructions.uasset deleted file mode 100644 index 3e1f3cf..0000000 --- a/Unreal/Content/Project/BP/Modes/Data/S_ProjectInstructions.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60b75fd74b5e20c2f068c83c6ddb863913a5dc41f896dae5f4d24f6fbee4f872 -size 5335 diff --git a/Unreal/Content/Project/BP/Modes/Data/S_Prompt_Dialogue.uasset b/Unreal/Content/Project/BP/Modes/Data/S_Prompt_Dialogue.uasset deleted file mode 100644 index 2662731..0000000 --- a/Unreal/Content/Project/BP/Modes/Data/S_Prompt_Dialogue.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f95e9fccf55103a4495d03a3afaeb96687bcc03c6c9b604e85806b8306ed274 -size 5874 diff --git a/Unreal/Content/Project/BP/Modes/Data/S_Prompt_DialogueArray.uasset b/Unreal/Content/Project/BP/Modes/Data/S_Prompt_DialogueArray.uasset deleted file mode 100644 index c19bb0d..0000000 --- a/Unreal/Content/Project/BP/Modes/Data/S_Prompt_DialogueArray.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9cb68fa12c0ebe4f9a2485e943a2c9da986d6097dda020b358172d214f48acfb -size 4186 diff --git a/Unreal/Content/Project/BP/Modes/States/DT_ProjectStates.uasset b/Unreal/Content/Project/BP/Modes/States/DT_ProjectStates.uasset new file mode 100644 index 0000000..85294ee --- /dev/null +++ b/Unreal/Content/Project/BP/Modes/States/DT_ProjectStates.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70952364405d6d4d3e6a534169f3ec8b7e481632502174543744e482f1ccc2c1 +size 7687 diff --git a/Unreal/Content/Project/BP/Modes/States/DT_StateAdjustmentConfig.uasset b/Unreal/Content/Project/BP/Modes/States/DT_StateAdjustmentConfig.uasset new file mode 100644 index 0000000..5388044 --- /dev/null +++ b/Unreal/Content/Project/BP/Modes/States/DT_StateAdjustmentConfig.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07a9bfa89ae74106cabdaf8ef0b01ccd2a3bda85018e09e1adaa9305ebbc618d +size 6943 diff --git a/Unreal/Content/Project/BP/Other/BP_LookAtTarget.uasset b/Unreal/Content/Project/BP/Other/BP_LookAtTarget.uasset index f4bfa46..a885978 100644 --- a/Unreal/Content/Project/BP/Other/BP_LookAtTarget.uasset +++ b/Unreal/Content/Project/BP/Other/BP_LookAtTarget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ed052ef2941dbc28b384599214b59b3971ffd5076f173967010582b43f816cf -size 140210 +oid sha256:6553912c493f7c67a538be3bd9321df79d5256aad178dfc50eeb9d22c8985612 +size 155894 diff --git a/Unreal/Content/Project/BP/States/AICommand_TestProceedToOutro.uasset b/Unreal/Content/Project/BP/States/AICommand_TestProceedToOutro.uasset deleted file mode 100644 index 65fce5f..0000000 --- a/Unreal/Content/Project/BP/States/AICommand_TestProceedToOutro.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a44e29cea1f7fef6210a88b8c2864211e542502f20568b866e023fdedee24c50 -size 68237 diff --git a/Unreal/Content/Project/Widgets/WBP_TestEndScreen.uasset b/Unreal/Content/Project/Widgets/WBP_TestEndScreen.uasset index 3d11e0e..d244a92 100644 --- a/Unreal/Content/Project/Widgets/WBP_TestEndScreen.uasset +++ b/Unreal/Content/Project/Widgets/WBP_TestEndScreen.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc688c30fb1b002793a68accc5ceafd695103637fe9deccd8b8bce9b3b2d5293 -size 32225 +oid sha256:50b7c82c06b8f547f95eb79da57ec30fa79579efb992d15e93f8f2d83fa02879 +size 32284 diff --git a/Unreal/Content/Project/Widgets/WBP_TestIdleScreen.uasset b/Unreal/Content/Project/Widgets/WBP_TestIdleScreen.uasset index 7ecf9b3..ac49bec 100644 --- a/Unreal/Content/Project/Widgets/WBP_TestIdleScreen.uasset +++ b/Unreal/Content/Project/Widgets/WBP_TestIdleScreen.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c108a9b99964a5acbdd1c9921933139bd6ab0ab3470c5d5a95b9d8f43cbea37 -size 37930 +oid sha256:84329288119b3738c3a125f9b568765585aa5cc4c7fe8d9a09b099c387847d9a +size 37989 diff --git a/Unreal/Content/Project/Widgets/W_DialogueBox.uasset b/Unreal/Content/Project/Widgets/W_DialogueBox.uasset index de43ec8..068bd05 100644 --- a/Unreal/Content/Project/Widgets/W_DialogueBox.uasset +++ b/Unreal/Content/Project/Widgets/W_DialogueBox.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:241050ad505abbaa6600e43fc831bc31d37a8dacc8243d9f69feba0d7750f851 -size 981421 +oid sha256:9312e05997e8cccc8b985b51c0af98ab54bf42ed92d3565580c54c3e6cfbb561 +size 979781 diff --git a/Unreal/Content/Project/Widgets/W_LogoWidget.uasset b/Unreal/Content/Project/Widgets/W_LogoWidget.uasset index c78fe11..b2045fc 100644 --- a/Unreal/Content/Project/Widgets/W_LogoWidget.uasset +++ b/Unreal/Content/Project/Widgets/W_LogoWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a05803e7c62c4ce1f86d8d17dbe68754bb7c528025fd9cbbc1f88d1c4615a5a -size 104292 +oid sha256:bdd92cee5da6f70c5b7592006efc5d6c94b475a95c921e163c60a69e49c601ea +size 103852 diff --git a/Unreal/Content/Project/Widgets/W_Main.uasset b/Unreal/Content/Project/Widgets/W_Main.uasset index f2739fa..401e679 100644 --- a/Unreal/Content/Project/Widgets/W_Main.uasset +++ b/Unreal/Content/Project/Widgets/W_Main.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90099403e32d25b5460759e3023f706c1aa0b56e35c57829c391e92ffba01ad2 -size 134836 +oid sha256:ac8eefbed8ccdc7ced9c3477d53268ca47a521d3b5acca807f0fb8cf3dc570fe +size 191567 diff --git a/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset b/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset index b1fda47..109e046 100644 --- a/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset +++ b/Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2013c525712e0107fc2fc7401ad8b0ec1af6a66cd66127b2a45009667b06e6ba -size 163930 +oid sha256:9a6090add9160de51695d0b44d582593223e59100027d99deb23666c5cadb590 +size 164221 diff --git a/Unreal/Content/SPIE/BP/Config/DT_SPIE_States_Hausmesse.uasset b/Unreal/Content/SPIE/BP/Config/DT_SPIE_States_Hausmesse.uasset deleted file mode 100644 index 92390d8..0000000 --- a/Unreal/Content/SPIE/BP/Config/DT_SPIE_States_Hausmesse.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5f69ead9fb1c5bf612eadac363146451551c20ae7378d5d04efebfc94c2eb9a2 -size 5856 diff --git a/Unreal/Content/SPIE/BP/Config/DT_SPIE_States_ManagmentBoard.uasset b/Unreal/Content/SPIE/BP/Config/DT_SPIE_States_ManagmentBoard.uasset deleted file mode 100644 index cb3ab4c..0000000 --- a/Unreal/Content/SPIE/BP/Config/DT_SPIE_States_ManagmentBoard.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15a8e5526918c026be9b8a43cb58b73b7e6d57a331722be25dcaa385108c4531 -size 6666 diff --git a/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_1_A.uasset b/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_1_A.uasset new file mode 100644 index 0000000..9796dca --- /dev/null +++ b/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_1_A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b95164be344d5b3d24854bf40151c31ea2f078e47d98cbab150999914ae45edf +size 1991 diff --git a/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_1_B.uasset b/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_1_B.uasset new file mode 100644 index 0000000..6529736 --- /dev/null +++ b/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_1_B.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96129b645f9b7d2e7b955501dabb4deaa770c269c5b56de397b688d424a3a3c3 +size 1991 diff --git a/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_2.uasset b/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_2.uasset new file mode 100644 index 0000000..3e7762e --- /dev/null +++ b/Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_ManagementBoard_Day_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb8b510517864dc1561ce7b24f9a02f7bbeee534104999659f7b8ce762a5b54c +size 1971 diff --git a/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day1_A.uasset b/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day1_A.uasset new file mode 100644 index 0000000..d1206d0 --- /dev/null +++ b/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day1_A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb6d7f206a831ca0339f48aeb2e57306ffac932b0bd56c1167c114a3797c609a +size 7754 diff --git a/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day1_B.uasset b/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day1_B.uasset new file mode 100644 index 0000000..866ea20 --- /dev/null +++ b/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day1_B.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4014c5144dbd53de22c1eb4cc12b92905c95340136e12bc64b3287f2b78c967e +size 7754 diff --git a/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day2.uasset b/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day2.uasset new file mode 100644 index 0000000..99b4aa1 --- /dev/null +++ b/Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_ManabgementBoard_Day2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17c2b17c065f3a4f1e275215ee40596e9771bc4130449126dfb16eae34ad4e77 +size 7744 diff --git a/Unreal/Content/SPIE/Mode/DA_Mode_SPIE.uasset b/Unreal/Content/SPIE/Mode/DA_Mode_SPIE.uasset deleted file mode 100644 index 5afe0c4..0000000 --- a/Unreal/Content/SPIE/Mode/DA_Mode_SPIE.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:374a96425fbdc85f3da73d0bac9c8130dc1396df0b830749cc981cbfa14b4731 -size 1478 diff --git a/Unreal/Plugins/AvatarCore_AI/Content/RealtimeAPI/AvatarCoreAIRealtimeAPI.uasset b/Unreal/Plugins/AvatarCore_AI/Content/RealtimeAPI/AvatarCoreAIRealtimeAPI.uasset deleted file mode 100644 index 992375c..0000000 Binary files a/Unreal/Plugins/AvatarCore_AI/Content/RealtimeAPI/AvatarCoreAIRealtimeAPI.uasset and /dev/null differ diff --git a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp index c1d3dcb..15a7d3a 100644 --- a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp +++ b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp @@ -115,6 +115,17 @@ void UAIBaseManager::DeinitAIManager() BroadcastAILog(FString::Printf(TEXT("AI Manager deinitialized!")), false); } +void UAIBaseManager::OnAIReady() +{ + UAIBaseManager::SetNewState(EAvatarCoreAIState::Ready); + if (!ResponseQueue.IsEmpty()) + { + FString QueuedPrompt; + ResponseQueue.Dequeue(QueuedPrompt); + UAIBaseManager::SendResponse(QueuedPrompt, false, true); + } +} + void UAIBaseManager::SetNewState(EAvatarCoreAIState NewState, bool ForceState) { @@ -126,6 +137,13 @@ void UAIBaseManager::SetNewState(EAvatarCoreAIState NewState, bool ForceState) void UAIBaseManager::SendResponse(const FString& Response, bool NotifyDelay = false, bool TriggerResponse = true) { + if (CurrentAIState != EAvatarCoreAIState::Ready) { + ResponseQueue.Enqueue(Response); + if(CurrentAIState == EAvatarCoreAIState::Disconnected) + ActivateAI(); + return; + } + AnswerCache.Empty(); ResponseID++; LastRequest = Response; @@ -134,10 +152,11 @@ void UAIBaseManager::SendResponse(const FString& Response, bool NotifyDelay = fa ActivateAI(); return; } + UAIBaseManager::SetNewState(EAvatarCoreAIState::Processing); BroadcastAILog(FString::Printf(TEXT("AI Manager sent question/response: %s"), *Response)); if (NotifyDelay) UAIBaseManager::StartDelayedAnswerTimer(); - //Override in Child + SendResponseChild(Response, NotifyDelay, TriggerResponse); } void UAIBaseManager::RepeatText(FString TextToRepeat, bool DoRephrase) @@ -154,6 +173,8 @@ void UAIBaseManager::RepeatText(FString TextToRepeat, bool DoRephrase) void UAIBaseManager::ClearAI() { + ResponseQueue.Empty(); + if (CurrentAIState <= EAvatarCoreAIState::Ready) return; UAIBaseManager::SetNewState(EAvatarCoreAIState::Ready, true); @@ -309,6 +330,7 @@ void UAIBaseManager::ClearMCPCommand() void UAIBaseManager::CommandFinished(const FString& Command, const FString& Payload) { + UE_LOG(LogTemp, Warning, TEXT("Processing")); SetNewState(EAvatarCoreAIState::Processing); functionCallRunning = false; if (bDebugMode) 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 c960702..b276989 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 @@ -28,6 +28,7 @@ void UAvatarCoreAIRealtime::DeinitAIManager() void UAvatarCoreAIRealtime::ActivateAI() { + UAIBaseManager::SetNewState(EAvatarCoreAIState::Initializing); UAvatarCoreAIRealtime::ConnectToWebSocket(); } @@ -37,9 +38,8 @@ void UAvatarCoreAIRealtime::DeactivateAI() UAIBaseManager::DeactivateAI(); } -void UAvatarCoreAIRealtime::SendResponse(const FString& Response, bool NotifyDelay = false, bool TriggerResponse = true) +void UAvatarCoreAIRealtime::SendResponseChild(const FString& Response, bool NotifyDelay = false, bool TriggerResponse = true) { - UAIBaseManager::SendResponse(Response, NotifyDelay, TriggerResponse); UAvatarCoreAIRealtime::CreateConversationItem(Response, EOpenAIRoleType::User, TriggerResponse); } @@ -219,7 +219,7 @@ void UAvatarCoreAIRealtime::ConnectToWebSocket() void UAvatarCoreAIRealtime::DisconnectFromWebSocket() { bIsWebsocketConnected = false; - + bIsSessionInitialized = false; UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Disconnected); // Clean up all accumulated audio data RequestAudioData.Empty(); @@ -295,7 +295,6 @@ void UAvatarCoreAIRealtime::CreateConversationItem(const FString& message, EOpen if (triggerResponse) { UAvatarCoreAIRealtime::CreateReseponse(); - UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Processing); } } @@ -361,9 +360,11 @@ void UAvatarCoreAIRealtime::OnWebSocketConnectionError(const FString& Error) void UAvatarCoreAIRealtime::OnWebSocketConnectionConnected() { - BroadcastAILog("OpenAI Websocket connected"); - bIsWebsocketConnected = true; - UAvatarCoreAIRealtime::UpdateSession(); + if(!bIsWebsocketConnected) + { + BroadcastAILog("OpenAI Websocket connected"); + bIsWebsocketConnected = true; + } } void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& Message) @@ -423,10 +424,16 @@ void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& M } } } - else if (TypeString == "session.updated") { - UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Ready); + else if (TypeString == "session.created") + { + UAvatarCoreAIRealtime::UpdateSession(); + return; + } + else if (TypeString == "session.updated") + { + UAIBaseManager::OnAIReady(); + return; } - // Match the request type if (TypeParts[0] == "session") RequestType = EOpenAIRequestType::session; diff --git a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h index 2bcba76..83652b0 100644 --- a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h +++ b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h @@ -81,6 +81,10 @@ public: UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI") virtual void UpdateSession() {}; + // They AI is ready to answer + UFUNCTION() + void OnAIReady(); + /** * Deinitalize AI - when going to Idle for example */ @@ -97,7 +101,10 @@ public: * Send Response/Question to the AI Model. If NotifyDelay is true call the DelayedAnswer Event when time defined in AIConfig has passed. */ UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI") - virtual void SendResponse(const FString& Response, bool NotifyDelay, bool TriggerResponse); + void SendResponse(const FString& Response, bool NotifyDelay, bool TriggerResponse); + + UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI") + virtual void SendResponseChild(const FString& Response, bool NotifyDelay, bool TriggerResponse) {}; /** * Make the AI Model repeat the Text. @@ -264,6 +271,8 @@ protected: //Handle Delayed Answer FTimerHandle DelayedAnswerTimer; -protected: +private: + + TQueue ResponseQueue; }; \ No newline at end of file diff --git a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/MCP/MCPBaseManager.h b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/MCP/MCPBaseManager.h index 46fed46..f73df21 100644 --- a/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/MCP/MCPBaseManager.h +++ b/Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/MCP/MCPBaseManager.h @@ -62,6 +62,15 @@ public: UPROPERTY(BlueprintAssignable, Category = "AvatarCoreAI|MCP|Events") FOnMCPCommandFailed OnMCPCommandFailed; + // Blueprint Functions - Lifecycle + UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP|Lifecycle") + virtual void InitMCPManager(UMCPBaseConfig* InMCPConfig, bool DebugMode); + + UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP|Lifecycle") + virtual void DeinitMCPManager(); + + UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP|Lifecycle") + virtual void ClearMCPManager() {}; // Blueprint Functions - Operations UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP|Operations") @@ -77,16 +86,8 @@ public: // Blueprint Functions - State Management UFUNCTION(BlueprintCallable, BlueprintPure, Category = "AvatarCoreAI|MCP|State") EMCPManagerState GetCurrentState() const { return CurrentState; } - - // Blueprint Functions - Lifecycle - UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP|Lifecycle") - virtual void InitMCPManager(UMCPBaseConfig* InMCPConfig, bool DebugMode); - UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP|Lifecycle") - virtual void DeinitMCPManager(); - - UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP|Lifecycle") - virtual void ClearMCPManager() {}; + UFUNCTION(BlueprintCallable, BlueprintPure, Category = "AvatarCoreAI|MCP|State") bool IsReady() const { return CurrentState == EMCPManagerState::Ready; } UFUNCTION(BlueprintCallable, BlueprintPure, Category = "AvatarCoreAI|MCP|State") 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 c3946ae..cbc4df2 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 @@ -156,7 +156,7 @@ public: void ActivateAI() override; void DeactivateAI() override; void UpdateSession() override; - void SendResponse(const FString& Response, bool NotifyDelay, bool TriggerResponse) override; + void SendResponseChild(const FString& Response, bool NotifyDelay, bool TriggerResponse) override; void ClearAI() override; void ConnectToWebSocket(); @@ -203,6 +203,10 @@ private: bool ResponseAudioDone = false; bool ResponseTextDone = false; + bool bIsSessionInitialized = false; + bool bWaitingForSessionUpdatedAck = false; + FString PendingSessionUpdateEventId; + // Map to store accumulated audio data for each request TMap> RequestAudioData; diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset index 701de8e..323eb67 100644 --- a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9d01528659c319f4e999f9ca2feb1bff11e1118a2e774379cb32f7bb7e0c0a5 -size 72498 +oid sha256:c86b0e06d695bf2a42554520c540712493ae2f4bcb20bd99825b46ac38e9787a +size 24641 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset index 89657ec..1eefc76 100644 --- a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeaa984d898cf627de572d29a79b81803993dd34d6cf3b0406315232410b98af -size 572469 +oid sha256:d243c7e7119d127434e12f8b1c324b97f423c392fe99a04f00797b9419a3d4db +size 599795 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Commands/AICommand_TestProceedToOutro.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Commands/AICommand_TestProceedToOutro.uasset new file mode 100644 index 0000000..0b785e5 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Commands/AICommand_TestProceedToOutro.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6454914d8aa5720c6833263d9a7dcfbaa8ed88ee30bfc105bbe411d3660d7737 +size 68026 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_BaseCustomPromptDialogue.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_BaseCustomPromptDialogue.uasset new file mode 100644 index 0000000..37aeddb --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_BaseCustomPromptDialogue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b431dcfe27687793a9071f87997821d284b77be9943f2751194f65d5dde02a2a +size 43108 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_Demo.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_Demo.uasset new file mode 100644 index 0000000..b0b5a20 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_Demo.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be0248e38d828043bc58b9272ae1281280d071a28b7fd8d937063d79bc06e090 +size 53756 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_LoadFromSettings.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_LoadFromSettings.uasset new file mode 100644 index 0000000..fbc999c --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_LoadFromSettings.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47f09fc85e9d8c8820948902318ddfb3371fd17b41f12d2f76a7d1d85fdc5a76 +size 63769 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/DataTable/PDA_Mode.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/DataTable/PDA_Mode.uasset new file mode 100644 index 0000000..c1430c3 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/DataTable/PDA_Mode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79e3d452badf2d77deb4f05ffb68a96391b9a854db1228cedc3bcb754d551539 +size 14730 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_StateProcedure.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_StateProcedure.uasset deleted file mode 100644 index 3b18ce4..0000000 --- a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_StateProcedure.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5baae4670d0bd968b935dd97eea0f755bf2bcaecc38b2fbac4bfdd79dfceb857 -size 18251 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_WidgetConfigs.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_WidgetConfigs.uasset deleted file mode 100644 index 8c8e0b7..0000000 --- a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_WidgetConfigs.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a51ece9e7912195effab2ec2366a1a59ef046aa73630f27b5d5094b9fb2662d -size 13553 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_ActionsToTake.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_ActionsToTake.uasset new file mode 100644 index 0000000..965f67a --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_ActionsToTake.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeadae12c679cf76d42c26c6db3afcabfdf5620e2ea625c7e37cb4977c0f1a58 +size 4140 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_AvatarInstructions.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_AvatarInstructions.uasset new file mode 100644 index 0000000..689f172 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_AvatarInstructions.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c6885a2b0db3794ad123ab2db754c1b3e761e20afb4e3338c740a7176566e5d +size 6208 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_ProjectInstructions.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_ProjectInstructions.uasset new file mode 100644 index 0000000..b534d1b --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_ProjectInstructions.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55c305dee9567d9cc17907489fcdfb981cb6f2e734f9bea0eb13459e396b77a1 +size 5383 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_PromptDialogueType.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_PromptDialogueType.uasset new file mode 100644 index 0000000..4630b4f --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_PromptDialogueType.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a33b9dde4276d73ce7bc075a58ebdb2fa6cc73abed579c3eeeacc5e293f8436 +size 4033 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_Dialogue.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_Dialogue.uasset new file mode 100644 index 0000000..d4e4df6 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_Dialogue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8c7e30691dbdf98b4e7cc960433179f5fcd3a820c61771bacac3c0ef28f86e0 +size 7669 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_DialogueArray.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_DialogueArray.uasset new file mode 100644 index 0000000..24fa510 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_DialogueArray.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5008337d4fe4263b23f5b4dd74fc6f3b213674e1245073093b3f6eed6fe6e2b5 +size 4258 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_StateProcedure.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_StateProcedure.uasset new file mode 100644 index 0000000..ec56137 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_StateProcedure.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da1a4fffcc3fd8d3c3d64637d5b26a7f5e55031faa0d9ab4775268dbe68a6a02 +size 18326 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/W_BaseWidget.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/W_BaseWidget.uasset deleted file mode 100644 index 263aacb..0000000 --- a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/W_BaseWidget.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:21f6fccacac05b0ee9800d56ef1605ff4a2e84776b58134b72165ef795e6b7a6 -size 177821 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_BaseStateWidget.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_BaseStateWidget.uasset new file mode 100644 index 0000000..489e212 --- /dev/null +++ b/Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_BaseStateWidget.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d36293b285c17b10fa3a83f847e81f9ccd426082e33576db7da49bd24b489b3 +size 177450 diff --git a/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset b/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset index be05457..9b562b0 100644 --- a/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset +++ b/Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e18ba822b91fb74d178d7f9b3cff961d5bd07ef5b1ad60e081605c57f403506 -size 213840 +oid sha256:dd9e0c66f9481895cb46ea0b74af22b6b74acc339443250a1c3a8f26be8ed9ea +size 208655 diff --git a/Unreal/Plugins/AvatarCore_STT/Source/AvatarCore_STT/Private/Preprocessor/STTPreprocessorVAD.cpp b/Unreal/Plugins/AvatarCore_STT/Source/AvatarCore_STT/Private/Preprocessor/STTPreprocessorVAD.cpp index 3d445ea..f942ab1 100644 --- a/Unreal/Plugins/AvatarCore_STT/Source/AvatarCore_STT/Private/Preprocessor/STTPreprocessorVAD.cpp +++ b/Unreal/Plugins/AvatarCore_STT/Source/AvatarCore_STT/Private/Preprocessor/STTPreprocessorVAD.cpp @@ -63,6 +63,7 @@ void USTTPreprocessorVAD::OnChunkReceived(TArray PCMData, FAudioInformati const float Dbfs = 20.0f * FMath::LogX(10.0f, Rms); //UE_LOG(LogTemp, Warning, TEXT("Dbfs %f"), Dbfs); isLoadEnough = (Dbfs < static_cast(STTBaseSettings.VADSettings.VAD_MinSpeechAmplitude)); + isLoadEnough = (Dbfs > static_cast(STTBaseSettings.VADSettings.VAD_MinSpeechAmplitude)); } if(currentVADState != lastVADState || !isLoadEnough)