Browse Source

[RECOMPILE] Matched with Base, now with refactored state system

master
Tillman Staffen 2 weeks ago
parent
commit
2362113a6a
  1. BIN
      Unreal/Content/Project/AnimationTesting/M_Animation_Testing.umap
  2. BIN
      Unreal/Content/Project/BP/Avatars/Avatar_Ben_BREX.uasset
  3. BIN
      Unreal/Content/Project/BP/Avatars/Avatar_Jasmin.uasset
  4. BIN
      Unreal/Content/Project/BP/Avatars/PersonalityConfigs/RTG_Metahuman_MMed-To-Ben.uasset
  5. BIN
      Unreal/Content/Project/BP/BP_Environment_Manager.uasset
  6. BIN
      Unreal/Content/Project/BP/BP_Media_Manager.uasset
  7. BIN
      Unreal/Content/Project/BP/BP_Project_Manager.uasset
  8. BIN
      Unreal/Content/Project/BP/BP_SerialCom_v4_UE510_SPIE.uasset
  9. BIN
      Unreal/Content/Project/BP/Base/PC_Project.uasset
  10. BIN
      Unreal/Content/Project/BP/EnumsAndStructs/S_ConfigSettings.uasset
  11. BIN
      Unreal/Content/Project/BP/Environments/BP_Environment_FogWithRing.uasset
  12. BIN
      Unreal/Content/Project/BP/Environments/DataTables/DT_StateAdjustmentConfig.uasset
  13. BIN
      Unreal/Content/Project/BP/Modes/DA_Mode_Base.uasset
  14. BIN
      Unreal/Content/Project/BP/Modes/DA_Mode_LookAtTest.uasset
  15. BIN
      Unreal/Content/Project/BP/Modes/DA_Mode_QnA.uasset
  16. BIN
      Unreal/Content/Project/BP/Modes/States/DT_ProjectStates.uasset
  17. BIN
      Unreal/Content/Project/BP/Modes/States/DT_ProjectStates_LookatTest.uasset
  18. BIN
      Unreal/Content/Project/BP/Modes/States/DT_ProjectStates_QnA.uasset
  19. BIN
      Unreal/Content/Project/BP/Modes/States/DT_StateAdjustmentConfig.uasset
  20. BIN
      Unreal/Content/Project/Maps/M_Startup.umap
  21. BIN
      Unreal/Content/Project/Widgets/W_DialogueBox.uasset
  22. BIN
      Unreal/Content/Project/Widgets/W_Main.uasset
  23. BIN
      Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset
  24. BIN
      Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_QnA.uasset
  25. BIN
      Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_SpieInnovationDay.uasset
  26. BIN
      Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_SpieOne.uasset
  27. BIN
      Unreal/Content/SPIE/BP/Mode/States/CustomDialogue/BP_CustomDialogue_InnovationDay.uasset
  28. BIN
      Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_InnovationDay.uasset
  29. BIN
      Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_QnA.uasset
  30. BIN
      Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_SpieOne.uasset
  31. BIN
      Unreal/Content/SPIE/BP/Mode/States/State_DialogueIntro_InnovationDay.uasset
  32. BIN
      Unreal/Content/SPIE/BP/Mode/States/State_DialogueIntro_SPIE_One.uasset
  33. 2
      Unreal/Plugins/AvatarCore_AI/AvatarCore_AI.uplugin
  34. BIN
      Unreal/Plugins/AvatarCore_AI/Resources/Icon128.png
  35. 71
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp
  36. 29
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/RealtimeAPI/AvatarCoreAIRealtime.cpp
  37. 4
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseConfig.h
  38. 25
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h
  39. 24
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AvatarCoreAIEnumsAndStructs.h
  40. 4
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h
  41. 4
      Unreal/Plugins/AvatarCore_Manager/AvatarCore_Manager.uplugin
  42. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/AvatarCoreManager.uasset
  43. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset
  44. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset
  45. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_BaseCustomDialogue_.uasset
  46. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_BaseCustomPromptDialogue.uasset
  47. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogie_Demo.uasset
  48. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_Demo.uasset
  49. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_LoadFromConfig.uasset
  50. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_LoadFromSettings.uasset
  51. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/DataTable/PDA_Mode.uasset
  52. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_BaseState.uasset
  53. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_ContinueOnly_State.uasset
  54. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_Dialogue_State.uasset
  55. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_Idle_State.uasset
  56. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_QnA_State.uasset
  57. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Dialogue.uasset
  58. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_DialogueArray.uasset
  59. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_DialogueType.uasset
  60. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_PromptDialogueType.uasset
  61. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_Dialogue.uasset
  62. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_StateProcedure.uasset
  63. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/BP_LookAtTest.uasset
  64. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_AvatarReactionButton.uasset
  65. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_Base_DynamicAvatarReaction.uasset
  66. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_TestAvatarLookAtWidgetCollection.uasset
  67. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Textures/Icon128.uasset
  68. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/UnrealCommands/AICommandTestBigHead.uasset
  69. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset
  70. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset
  71. BIN
      Unreal/Plugins/AvatarCore_Manager/Resources/Icon128.png
  72. 2
      Unreal/Plugins/AvatarCore_MetaHuman/AvatarCore_MetaHuman.uplugin
  73. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_BodyVisible.uasset
  74. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Interface/BI_AvatarAnimBP.uasset
  75. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/DefaultIdle/AS_MC_Tim_02_Take08_Anim02_LongIdle_Loop_Cascadeur.uasset
  76. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take01_Anim01_HandsBehindBack_Cascadeur.uasset
  77. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take02_Anim02_ShakeArms_Cascadeur.uasset
  78. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim01_Idle_Cascadeur.uasset
  79. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim02_Idle_Cascadeur.uasset
  80. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim02_LongIdle_Cut_Cascadeur.uasset
  81. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take11_Anim02_SwingArms_Cascadeur.uasset
  82. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take12_Anim02_Idle_Cascadeur.uasset
  83. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take21_Anim01_StretchFingers_Cascadeur.uasset
  84. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take01_Anim01_HandsBehindBack_Cascadeur.uasset
  85. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take02_Anim02_ShakeArms_Cascadeur.uasset
  86. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take02_Anim03_StretchUpperBody_Cascadeur.uasset
  87. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take05_Anim01_LookToSide_Cut_Cascadeur.uasset
  88. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take05_Anim02_LookToSide_Cut_Cascadeur.uasset
  89. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take08_Anim01_Idle_Cascadeur.uasset
  90. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take08_Anim02_Idle_Cascadeur.uasset
  91. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take08_Anim02_LongIdle_Cut_Cascadeur.uasset
  92. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take09_Anim01_LookToSide_Cut_Cascadeur.uasset
  93. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take09_Anim03_LookToSide_Cut_Cascadeur.uasset
  94. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take10_Anim01_LookToSide_Cut_Cascadeur.uasset
  95. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take11_Anim02_SwingArms_Cascadeur.uasset
  96. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take12_Anim02_Idle_Cascadeur.uasset
  97. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take13_Anim01_LookSide_Cut_Cascadeur.uasset
  98. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take13_Anim02_LookSide_Cut_Cascadeur.uasset
  99. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take19_Anim01_ListenNod_Cut_Cascadeur.uasset
  100. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take19_Anim02_ListenNod_Cut_Cascadeur.uasset

BIN
Unreal/Content/Project/AnimationTesting/M_Animation_Testing.umap (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Avatars/Avatar_Ben_BREX.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Avatars/Avatar_Jasmin.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Avatars/PersonalityConfigs/RTG_Metahuman_MMed-To-Ben.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/BP_Environment_Manager.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/BP_Media_Manager.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/BP_Project_Manager.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/BP_SerialCom_v4_UE510_SPIE.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Base/PC_Project.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/EnumsAndStructs/S_ConfigSettings.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Environments/BP_Environment_FogWithRing.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Environments/DataTables/DT_StateAdjustmentConfig.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Modes/DA_Mode_Base.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Modes/DA_Mode_LookAtTest.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Modes/DA_Mode_QnA.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Modes/States/DT_ProjectStates.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Modes/States/DT_ProjectStates_LookatTest.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Modes/States/DT_ProjectStates_QnA.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/BP/Modes/States/DT_StateAdjustmentConfig.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/Maps/M_Startup.umap (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/Widgets/W_DialogueBox.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/Project/Widgets/W_Main.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/BP_SPIE_Manager_Child.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_QnA.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_SpieInnovationDay.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/DA_Mode_SPIE_SpieOne.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/States/CustomDialogue/BP_CustomDialogue_InnovationDay.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_InnovationDay.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_QnA.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/States/DT_SPIE_SpieOne.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/States/State_DialogueIntro_InnovationDay.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Content/SPIE/BP/Mode/States/State_DialogueIntro_SPIE_One.uasset (Stored with Git LFS)

Binary file not shown.

2
Unreal/Plugins/AvatarCore_AI/AvatarCore_AI.uplugin

@ -2,7 +2,7 @@
"FileVersion": 3, "FileVersion": 3,
"Version": 1, "Version": 1,
"VersionName": "1.1", "VersionName": "1.1",
"FriendlyName": "Avatar Core AI", "FriendlyName": "AvatarCore AI",
"Description": "A wrapper for OpenAI Assistents", "Description": "A wrapper for OpenAI Assistents",
"Category": "Other", "Category": "Other",
"CreatedBy": "b.RexGmbh", "CreatedBy": "b.RexGmbh",

BIN
Unreal/Plugins/AvatarCore_AI/Resources/Icon128.png (Stored with Git LFS)

Binary file not shown.

71
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp

@ -86,7 +86,7 @@ void UAIBaseManager::InitAIManagerChild(UAIBaseConfig* AIConfig, AActor* InWorld
void UAIBaseManager::DeinitAIManager() void UAIBaseManager::DeinitAIManager()
{ {
//ClearAI(); PreviousMessages.Empty();
if (MCPManager) { if (MCPManager) {
MCPManager->DeinitMCPManager(); MCPManager->DeinitMCPManager();
@ -123,12 +123,14 @@ void UAIBaseManager::DeinitAIManager()
void UAIBaseManager::OnAIReady() void UAIBaseManager::OnAIReady()
{ {
OnAIActivationStateChanged.Broadcast(true);
UAIBaseManager::SetNewState(EAvatarCoreAIState::Ready); UAIBaseManager::SetNewState(EAvatarCoreAIState::Ready);
if (!ResponseQueue.IsEmpty()) if (!ResponseQueue.IsEmpty())
{ {
FPrompt QueuedPrompt; FAIMessage QueuedPrompt;
ResponseQueue.Dequeue(QueuedPrompt); ResponseQueue.Dequeue(QueuedPrompt);
UAIBaseManager::SendResponse(QueuedPrompt.Prompt, QueuedPrompt.Role, false, true); UAIBaseManager::SendResponse(QueuedPrompt, false, true);
} }
} }
@ -137,6 +139,12 @@ bool UAIBaseManager::IsAIActivated()
return CurrentAIState > EAvatarCoreAIState::Initialized; return CurrentAIState > EAvatarCoreAIState::Initialized;
} }
void UAIBaseManager::DeactivateAI()
{
PreviousMessages.Empty();
OnAIActivationStateChanged.Broadcast(false);
}
void UAIBaseManager::SetNewState(EAvatarCoreAIState NewState, bool ForceState) void UAIBaseManager::SetNewState(EAvatarCoreAIState NewState, bool ForceState)
{ {
@ -146,31 +154,33 @@ void UAIBaseManager::SetNewState(EAvatarCoreAIState NewState, bool ForceState)
} }
} }
void UAIBaseManager::SendResponse(const FString& Response, EAvatarCoreAIPromptRole Role = EAvatarCoreAIPromptRole::User, bool NotifyDelay = false, bool TriggerResponse = true) void UAIBaseManager::SendResponse(FAIMessage Message, bool NotifyDelay, bool TriggerResponse)
{ {
if (CurrentAIState != EAvatarCoreAIState::Ready) { if (CurrentAIState != EAvatarCoreAIState::Ready && TriggerResponse) {
FPrompt tmpPrompt; FAIMessage tmpPrompt;
tmpPrompt.Prompt = Response; tmpPrompt.Message = Message.Message;
tmpPrompt.Role = Role; tmpPrompt.Role = Message.Role;
ResponseQueue.Enqueue(tmpPrompt); ResponseQueue.Enqueue(tmpPrompt);
if(CurrentAIState == EAvatarCoreAIState::Disconnected) if(CurrentAIState == EAvatarCoreAIState::Disconnected)
ActivateAI(); ActivateAI();
return; return;
} }
AddMessageToArray(Message);
AnswerCache.Empty(); AnswerCache.Empty();
ResponseID++; ResponseID++;
LastRequest = Response; LastRequest = Message.Message;
if (CurrentAIState < EAvatarCoreAIState::Ready || CurrentAIState >= EAvatarCoreAIState::Error) { if (CurrentAIState < EAvatarCoreAIState::Ready || CurrentAIState >= EAvatarCoreAIState::Error) {
BroadcastAIError("AI is not ready to send a response", EAvatarCoreAIError::NotInitialized); BroadcastAIError("AI is not ready to send a response", EAvatarCoreAIError::NotInitialized);
ActivateAI(); ActivateAI();
return; return;
} }
UAIBaseManager::SetNewState(EAvatarCoreAIState::Processing); UAIBaseManager::SetNewState(EAvatarCoreAIState::Processing);
BroadcastAILog(FString::Printf(TEXT("AI Manager sent question/response: %s"), *Response)); BroadcastAILog(FString::Printf(TEXT("AI Manager sent question/response: %s"), *Message.Message));
if (NotifyDelay) if (NotifyDelay)
UAIBaseManager::StartDelayedAnswerTimer(); UAIBaseManager::StartDelayedAnswerTimer();
SendResponseChild(Response, Role, NotifyDelay, TriggerResponse); SendResponseChild(Message, NotifyDelay, TriggerResponse);
} }
void UAIBaseManager::RepeatText(FString TextToRepeat, bool DoRephrase) void UAIBaseManager::RepeatText(FString TextToRepeat, bool DoRephrase)
@ -182,7 +192,10 @@ void UAIBaseManager::RepeatText(FString TextToRepeat, bool DoRephrase)
Instruction = "[REPHRASE] " + TextToRepeat; Instruction = "[REPHRASE] " + TextToRepeat;
else else
Instruction = "[REPEAT] " + TextToRepeat; Instruction = "[REPEAT] " + TextToRepeat;
SendResponse(Instruction, EAvatarCoreAIPromptRole::System, false, true); FAIMessage tmpPrompt;
tmpPrompt.Message = Instruction;
tmpPrompt.Role = EAvatarCoreAIPromptRole::System;
SendResponse(tmpPrompt, false, true);
} }
void UAIBaseManager::ClearAI() void UAIBaseManager::ClearAI()
@ -365,7 +378,10 @@ void UAIBaseManager::CommandFinished(const FString& Command, const FString& Payl
BroadcastAILog(FString::Printf(TEXT("Command '%s' ran successfully. Answer: %s"), *Command, *Payload), true); BroadcastAILog(FString::Printf(TEXT("Command '%s' ran successfully. Answer: %s"), *Command, *Payload), true);
else else
BroadcastAILog(FString::Printf(TEXT("Command '%s' ran successfully."), *Command), true); BroadcastAILog(FString::Printf(TEXT("Command '%s' ran successfully."), *Command), true);
SendResponse(Payload); FAIMessage FinishedCommandMessage;
FinishedCommandMessage.Role = EAvatarCoreAIPromptRole::System;
FinishedCommandMessage.Message = Payload;
SendResponse(FinishedCommandMessage, false, true);
} }
void UAIBaseManager::CommandFailed(const FString& Command, const FString& Payload) void UAIBaseManager::CommandFailed(const FString& Command, const FString& Payload)
@ -373,7 +389,26 @@ void UAIBaseManager::CommandFailed(const FString& Command, const FString& Payloa
functionCallRunning = false; functionCallRunning = false;
SetNewState(EAvatarCoreAIState::Ready); SetNewState(EAvatarCoreAIState::Ready);
BroadcastAILog(FString::Printf(TEXT("Command '%s' failed. Sending: %s"), *Command, *Payload), true); BroadcastAILog(FString::Printf(TEXT("Command '%s' failed. Sending: %s"), *Command, *Payload), true);
SendResponse(Payload); FAIMessage FailedCommandMessage;
FailedCommandMessage.Role = EAvatarCoreAIPromptRole::System;
FailedCommandMessage.Message = Payload;
SendResponse(FailedCommandMessage, false, true);
}
void UAIBaseManager::AddMessageToArray(FAIMessage NewMessage)
{
PreviousMessages.Add(NewMessage);
// Remove oldest if over limit
if (CurrentConfig->MaxMessages > -1 && PreviousMessages.Num() > CurrentConfig->MaxMessages)
{
PreviousMessages.RemoveAt(0); // removes oldest (first element)
}
}
TArray<FAIMessage> UAIBaseManager::GetAllPreviousMessage()
{
return PreviousMessages;
} }
void UAIBaseManager::StartDelayedAnswerTimer() void UAIBaseManager::StartDelayedAnswerTimer()
@ -409,6 +444,7 @@ void UAIBaseManager::OnAIResponse(const FString& Chunk, bool IsFinal)
{ {
ClearDelayedAnswerTimer(); ClearDelayedAnswerTimer();
FString UpdatedAnswer; FString UpdatedAnswer;
{ {
FScopeLock Lock(&AnswerCacheCriticalSection); FScopeLock Lock(&AnswerCacheCriticalSection);
@ -433,6 +469,13 @@ void UAIBaseManager::OnAIResponse(const FString& Chunk, bool IsFinal)
BroadcastAILog(CopyAnswer, true); BroadcastAILog(CopyAnswer, true);
}); });
} }
if(IsFinal)
{
FAIMessage tmpAIAnswer;
tmpAIAnswer.Role = EAvatarCoreAIPromptRole::Assistant;
tmpAIAnswer.Message = Chunk;
AddMessageToArray(tmpAIAnswer);
}
} }
void UAIBaseManager::AddSystemInstructions(const TArray<FSystemInstruction> SystemInstructions, bool WipeCurrent = true) void UAIBaseManager::AddSystemInstructions(const TArray<FSystemInstruction> SystemInstructions, bool WipeCurrent = true)

29
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/RealtimeAPI/AvatarCoreAIRealtime.cpp

@ -22,7 +22,6 @@ void UAvatarCoreAIRealtime::InitAIManagerChild(UAIBaseConfig* AIConfig, AActor*
void UAvatarCoreAIRealtime::DeinitAIManager() void UAvatarCoreAIRealtime::DeinitAIManager()
{ {
//UAvatarCoreAIRealtime::DeactivateAI();
UAIBaseManager::DeinitAIManager(); UAIBaseManager::DeinitAIManager();
} }
@ -34,13 +33,13 @@ void UAvatarCoreAIRealtime::ActivateAI()
void UAvatarCoreAIRealtime::DeactivateAI() void UAvatarCoreAIRealtime::DeactivateAI()
{ {
UAvatarCoreAIRealtime::DisconnectFromWebSocket();
UAIBaseManager::DeactivateAI(); UAIBaseManager::DeactivateAI();
UAvatarCoreAIRealtime::DisconnectFromWebSocket();
} }
void UAvatarCoreAIRealtime::SendResponseChild(const FString& Response, EAvatarCoreAIPromptRole Role, bool NotifyDelay = false, bool TriggerResponse = true) void UAvatarCoreAIRealtime::SendResponseChild(FAIMessage Message, bool NotifyDelay, bool TriggerResponse)
{ {
UAvatarCoreAIRealtime::CreateConversationItem(Response, Role, TriggerResponse); UAvatarCoreAIRealtime::CreateConversationItem(Message, TriggerResponse);
} }
void UAvatarCoreAIRealtime::ClearAI() void UAvatarCoreAIRealtime::ClearAI()
@ -218,6 +217,8 @@ void UAvatarCoreAIRealtime::ConnectToWebSocket()
void UAvatarCoreAIRealtime::DisconnectFromWebSocket() void UAvatarCoreAIRealtime::DisconnectFromWebSocket()
{ {
if (!bIsWebsocketConnected)
return;
bIsWebsocketConnected = false; bIsWebsocketConnected = false;
bIsSessionInitialized = false; bIsSessionInitialized = false;
UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Disconnected); UAvatarCoreAIRealtime::SetNewState(EAvatarCoreAIState::Disconnected);
@ -263,7 +264,7 @@ void UAvatarCoreAIRealtime::WebSocketSendType(const FString& type)
} }
} }
void UAvatarCoreAIRealtime::CreateConversationItem(const FString& message, EAvatarCoreAIPromptRole role, bool triggerResponse) void UAvatarCoreAIRealtime::CreateConversationItem(FAIMessage Message, bool triggerResponse)
{ {
TSharedPtr<FJsonObject> RootObject = MakeShareable(new FJsonObject); TSharedPtr<FJsonObject> RootObject = MakeShareable(new FJsonObject);
RootObject->SetStringField("type", "conversation.item.create"); RootObject->SetStringField("type", "conversation.item.create");
@ -271,15 +272,17 @@ void UAvatarCoreAIRealtime::CreateConversationItem(const FString& message, EAvat
// Create the item object // Create the item object
TSharedPtr<FJsonObject> ItemObject = MakeShareable(new FJsonObject); TSharedPtr<FJsonObject> ItemObject = MakeShareable(new FJsonObject);
ItemObject->SetStringField("type", "message"); ItemObject->SetStringField("type", "message");
ItemObject->SetStringField("role", UAvatarCoreAIRealtime::GetRoleAsString(role)); ItemObject->SetStringField("role", UAvatarCoreAIRealtime::GetRoleAsString(Message.Role));
// Create the content array with an audio object inside // Create the content array with an audio object inside
TArray<TSharedPtr<FJsonValue>> ContentArray; TArray<TSharedPtr<FJsonValue>> ContentArray;
TSharedPtr<FJsonObject> AudioObject = MakeShareable(new FJsonObject); TSharedPtr<FJsonObject> AudioObject = MakeShareable(new FJsonObject);
AudioObject->SetStringField("type", "input_text"); if(Message.Role == EAvatarCoreAIPromptRole::User || triggerResponse)
AudioObject->SetStringField("text", message); AudioObject->SetStringField("type", "input_text");
else
AudioObject->SetStringField("type", "output_text");
AudioObject->SetStringField("text", Message.Message);
ContentArray.Add(MakeShareable(new FJsonValueObject(AudioObject))); ContentArray.Add(MakeShareable(new FJsonValueObject(AudioObject)));
ItemObject->SetArrayField("content", ContentArray); ItemObject->SetArrayField("content", ContentArray);
@ -288,7 +291,8 @@ void UAvatarCoreAIRealtime::CreateConversationItem(const FString& message, EAvat
// Convert the root JSON object to a string // Convert the root JSON object to a string
FString OutputString; FString OutputString;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutputString); TSharedRef<TJsonWriter<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>> Writer =
TJsonWriterFactory<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>::Create(&OutputString);
FJsonSerializer::Serialize(RootObject.ToSharedRef(), Writer); FJsonSerializer::Serialize(RootObject.ToSharedRef(), Writer);
UAvatarCoreAIRealtime::WebSocketSend(OutputString); //Send the Message UAvatarCoreAIRealtime::WebSocketSend(OutputString); //Send the Message
@ -323,7 +327,8 @@ void UAvatarCoreAIRealtime::CreateReseponse()
// Convert the root JSON object to a string // Convert the root JSON object to a string
FString OutputString; FString OutputString;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutputString); TSharedRef<TJsonWriter<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>> Writer =
TJsonWriterFactory<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>::Create(&OutputString);
FJsonSerializer::Serialize(RootObject.ToSharedRef(), Writer); FJsonSerializer::Serialize(RootObject.ToSharedRef(), Writer);
UAvatarCoreAIRealtime::WebSocketSend(OutputString); UAvatarCoreAIRealtime::WebSocketSend(OutputString);
@ -527,7 +532,7 @@ void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& M
if (CurrentRetries < MaxRetries) if (CurrentRetries < MaxRetries)
{ {
CurrentRetries++; CurrentRetries++;
BroadcastAILog(FString::Printf(TEXT("Response.done is way to fast. Something is fishy. Let's try again OpenAI!")), true); BroadcastAILog(FString::Printf(TEXT("Response.done is way to fast. Something is fishy. Let's try again OpenAI! %s"), *TypeString), true);
CreateReseponse(); CreateReseponse();
} }
else { else {

4
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseConfig.h

@ -59,4 +59,8 @@ public:
// How many seconds before the delayedanswer event is triggered // How many seconds before the delayedanswer event is triggered
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true")) UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true"))
float DelayAnswerSeconds = 1.5f; float DelayAnswerSeconds = 1.5f;
// How many messages to keep in context (-1 for infinite)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AvatarCoreAI|Settings", meta = (ExposeOnSpawn = "true"))
int MaxMessages = -1;
}; };

25
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h

@ -16,6 +16,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAILog, FString, Message);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnAIError, FString, ErrorMessage, EAvatarCoreAIError, ErrorType); DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnAIError, FString, ErrorMessage, EAvatarCoreAIError, ErrorType);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FMulticastDelegateRealtimeAPIAudioChunk, const TArray<uint8>, PCMData, bool, IsFinal); DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FMulticastDelegateRealtimeAPIAudioChunk, const TArray<uint8>, PCMData, bool, IsFinal);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnAIDelayedAnswer); DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnAIDelayedAnswer);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAIActivationStateChanged, bool, IsActive);
class UMCPManager; class UMCPManager;
@ -50,6 +51,11 @@ public:
//If the AI Model creates audio itself it can be forwarded the TTS Manager. Not a blueprint, because blueprint does not care about uint8 //If the AI Model creates audio itself it can be forwarded the TTS Manager. Not a blueprint, because blueprint does not care about uint8
FMulticastDelegateRealtimeAPIAudioChunk OnAudioChunk; FMulticastDelegateRealtimeAPIAudioChunk OnAudioChunk;
//AI activated and ready for action
UPROPERTY(BlueprintAssignable, Category = "AvatarCoreAI|Events")
FOnAIActivationStateChanged OnAIActivationStateChanged;
/** /**
* Initializes the AI Manager with the given config and adds this UObject to the root set. * Initializes the AI Manager with the given config and adds this UObject to the root set.
*/ */
@ -86,14 +92,14 @@ public:
void OnAIReady(); void OnAIReady();
// Is the AI activated and ready? // Is the AI activated and ready?
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI") UFUNCTION(BlueprintPure, Category = "AvatarCoreAI")
bool IsAIActivated(); bool IsAIActivated();
/** /**
* Deinitalize AI - when going to Idle for example * Deinitalize AI - when going to Idle for example
*/ */
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI") UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI")
virtual void DeactivateAI() {}; virtual void DeactivateAI();
/** /**
* Change State of the AI Manager. * Change State of the AI Manager.
@ -105,10 +111,10 @@ public:
* Send Response/Question to the AI Model. If NotifyDelay is true call the DelayedAnswer Event when time defined in AIConfig has passed. * 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") UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI")
void SendResponse(const FString& Response, EAvatarCoreAIPromptRole Role, bool NotifyDelay, bool TriggerResponse); void SendResponse(FAIMessage Message, bool NotifyDelay, bool TriggerResponse);
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI") UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI")
virtual void SendResponseChild(const FString& Response, EAvatarCoreAIPromptRole Role, bool NotifyDelay, bool TriggerResponse) {}; virtual void SendResponseChild(FAIMessage Message, bool NotifyDelay, bool TriggerResponse) {};
/** /**
* Make the AI Model repeat the Text. * Make the AI Model repeat the Text.
@ -223,6 +229,12 @@ protected:
UFUNCTION() UFUNCTION()
void CommandFailed(const FString& Command, const FString& Payload); void CommandFailed(const FString& Command, const FString& Payload);
//Add System/User/Assistant Message to memory archive
void AddMessageToArray(FAIMessage NewMessage);
//Add System/User/Assistant Message to memory archive
TArray<FAIMessage> GetAllPreviousMessage();
//MCP Log Event //MCP Log Event
UFUNCTION() UFUNCTION()
void OnMCPLogReceived(const FString& LogMessage); void OnMCPLogReceived(const FString& LogMessage);
@ -284,8 +296,11 @@ protected:
//Handle Delayed Answer //Handle Delayed Answer
FTimerHandle DelayedAnswerTimer; FTimerHandle DelayedAnswerTimer;
//All previous messages in a Queue
TArray<FAIMessage> PreviousMessages;
private: private:
TQueue<FPrompt, EQueueMode::Spsc> ResponseQueue; TQueue<FAIMessage, EQueueMode::Spsc> ResponseQueue;
}; };

24
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AvatarCoreAIEnumsAndStructs.h

@ -51,6 +51,18 @@ enum class EOpenAIAssistantRequestType : uint8
DeleteRun DeleteRun
}; };
USTRUCT(BlueprintType)
struct FAIMessage
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI")
EAvatarCoreAIPromptRole Role = EAvatarCoreAIPromptRole::User;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI")
FString Message;
};
USTRUCT(BlueprintType) USTRUCT(BlueprintType)
struct FSystemInstruction struct FSystemInstruction
{ {
@ -88,15 +100,3 @@ struct FMCPToolInfo
OutputScheme = ""; OutputScheme = "";
} }
}; };
USTRUCT(BlueprintType)
struct FPrompt
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI")
FString Prompt;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI")
EAvatarCoreAIPromptRole Role;
};

4
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h

@ -149,7 +149,7 @@ public:
void ActivateAI() override; void ActivateAI() override;
void DeactivateAI() override; void DeactivateAI() override;
void UpdateSession() override; void UpdateSession() override;
void SendResponseChild(const FString& Response, EAvatarCoreAIPromptRole Role, bool NotifyDelay, bool TriggerResponse) override; void SendResponseChild(FAIMessage Message, bool NotifyDelay, bool TriggerResponse) override;
void ClearAI() override; void ClearAI() override;
void ConnectToWebSocket(); void ConnectToWebSocket();
@ -162,7 +162,7 @@ public:
void WebSocketSendType(const FString& type); void WebSocketSendType(const FString& type);
UFUNCTION(BlueprintCallable, Category = "AvatarCore AI|RealtimeAPI") UFUNCTION(BlueprintCallable, Category = "AvatarCore AI|RealtimeAPI")
void CreateConversationItem(const FString& message, EAvatarCoreAIPromptRole role, bool triggerResponse = true); void CreateConversationItem(FAIMessage Message, bool triggerResponse = true);
UFUNCTION(BlueprintCallable, Category = "AvatarCore AI|RealtimeAPI") UFUNCTION(BlueprintCallable, Category = "AvatarCore AI|RealtimeAPI")
void CreateReseponse(); void CreateReseponse();

4
Unreal/Plugins/AvatarCore_Manager/AvatarCore_Manager.uplugin

@ -2,8 +2,8 @@
"FileVersion": 3, "FileVersion": 3,
"Version": 1, "Version": 1,
"VersionName": "1.1", "VersionName": "1.1",
"FriendlyName": "Avatar Core Manager", "FriendlyName": "AvatarCore Manager",
"Description": "Avatar Core Manager", "Description": "AvatarCore Manager",
"Category": "Other", "Category": "Other",
"CreatedBy": "b.ReX GmbH", "CreatedBy": "b.ReX GmbH",
"CreatedByURL": "", "CreatedByURL": "",

BIN
Unreal/Plugins/AvatarCore_Manager/Content/AvatarCoreManager.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_BaseCustomDialogue_.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_BaseCustomPromptDialogue.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogie_Demo.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_Demo.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_LoadFromConfig.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/CustomDialogues/BP_CustomDialogue_LoadFromSettings.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/DataTable/PDA_Mode.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_BaseState.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_ContinueOnly_State.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_Dialogue_State.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_Idle_State.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/States/BP_QnA_State.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Dialogue.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_DialogueArray.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_DialogueType.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_PromptDialogueType.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_Prompt_Dialogue.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/StructsAndEnums/S_StateProcedure.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/BP_LookAtTest.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_AvatarReactionButton.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_Base_DynamicAvatarReaction.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_TestAvatarLookAtWidgetCollection.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Textures/Icon128.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/UnrealCommands/AICommandTestBigHead.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Resources/Icon128.png (Stored with Git LFS)

Binary file not shown.

2
Unreal/Plugins/AvatarCore_MetaHuman/AvatarCore_MetaHuman.uplugin

@ -2,7 +2,7 @@
"FileVersion": 3, "FileVersion": 3,
"Version": 1, "Version": 1,
"VersionName": "1.0", "VersionName": "1.0",
"FriendlyName": "AvatarCore_MetaHuman", "FriendlyName": "AvatarCore MetaHuman",
"Description": "Everything neccessary for MetaHuman Avatars", "Description": "Everything neccessary for MetaHuman Avatars",
"Category": "Other", "Category": "Other",
"CreatedBy": "b.ReX GmbH", "CreatedBy": "b.ReX GmbH",

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_BodyVisible.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Interface/BI_AvatarAnimBP.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/DefaultIdle/AS_MC_Tim_02_Take08_Anim02_LongIdle_Loop_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take01_Anim01_HandsBehindBack_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take02_Anim02_ShakeArms_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim01_Idle_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim02_Idle_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim02_LongIdle_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take11_Anim02_SwingArms_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take12_Anim02_Idle_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take21_Anim01_StretchFingers_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take01_Anim01_HandsBehindBack_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take02_Anim02_ShakeArms_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take02_Anim03_StretchUpperBody_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take05_Anim01_LookToSide_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take05_Anim02_LookToSide_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take08_Anim01_Idle_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take08_Anim02_Idle_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take08_Anim02_LongIdle_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take09_Anim01_LookToSide_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take09_Anim03_LookToSide_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take10_Anim01_LookToSide_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take11_Anim02_SwingArms_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take12_Anim02_Idle_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take13_Anim01_LookSide_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take13_Anim02_LookSide_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take19_Anim01_ListenNod_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_MC_Tim_02_Take19_Anim02_ListenNod_Cut_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save