Browse Source

[RECOMPILE] Removed nDisplay plugin, matched with avatar base

master
Tillman Staffen 1 month ago
parent
commit
efe5db34e2
  1. BIN
      Unreal/Content/Project/BP/Avatars/Avatar_Ben_BREX.uasset
  2. BIN
      Unreal/Content/Project/BP/Avatars/Avatar_Jasmin.uasset
  3. BIN
      Unreal/Content/Project/BP/BP_Environment_Manager.uasset
  4. BIN
      Unreal/Content/Project/BP/BP_Media_Manager.uasset
  5. BIN
      Unreal/Content/Project/BP/BP_Project_Manager.uasset
  6. BIN
      Unreal/Content/Project/BP/EnumsAndStructs/E_ProjectActions.uasset
  7. BIN
      Unreal/Content/Project/BP/Environments/BP_Environment_FogWithRing.uasset
  8. BIN
      Unreal/Content/Project/BP/Modes/States/DT_ProjectStates.uasset
  9. BIN
      Unreal/Content/Project/Maps/M_Startup.umap
  10. 7
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp
  11. 2
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/MCP/MCPUnrealCommand.cpp
  12. 6
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/RealtimeAPI/AvatarCoreAIRealtime.cpp
  13. 216
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/n8n/n8n_connector.cpp
  14. 62
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/n8n/n8n_connector.h
  15. 24
      Unreal/Plugins/AvatarCore_FaceDetector/AvatarCore_FaceDetector.uplugin
  16. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Content/BP_FaceDetector.uasset
  17. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Content/Material/M_Face.uasset
  18. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Content/Material/M_FaceArea.uasset
  19. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Content/Misc/BP_TargetActor.uasset
  20. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Content/Misc/Target.uasset
  21. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Resources/Icon128.png
  22. 60
      Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/AvatarCore_FaceDetector.Build.cs
  23. 20
      Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Private/AvatarCore_FaceDetector.cpp
  24. 307
      Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Private/AvatarFaceDetectorSubsystem.cpp
  25. 14
      Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Public/AvatarCore_FaceDetector.h
  26. 56
      Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Public/AvatarFaceDetectorSubsystem.h
  27. 45
      Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Public/FaceDetectorTypes.h
  28. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/FaceDetector.exe
  29. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/blaze_face_short_range.tflite
  30. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/face_landmarker.task
  31. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/ffmpeg.exe
  32. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/ffplay.exe
  33. BIN
      Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/ffprobe.exe
  34. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/AvatarCoreManager.uasset
  35. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset
  36. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset
  37. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/BP_LookAtTest.uasset
  38. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_Base_DynamicAvatarReaction.uasset
  39. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/Widgets/W_TestAvatarLookAtWidgetCollection.uasset
  40. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreManager.uasset
  41. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/n8n/BP_N8N_Connector.uasset
  42. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/n8n/N8N_DebugPingCommand.uasset
  43. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/n8n/N8N_WebResearchCommand.uasset
  44. 4
      Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Public/AvatarCore_ManagerEnums.h
  45. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_BodyRetarget.uasset
  46. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_Face.uasset
  47. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_01.uasset
  48. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_02.uasset
  49. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_03.uasset
  50. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_04.uasset
  51. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_05.uasset
  52. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_06.uasset
  53. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_07.uasset
  54. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_08.uasset
  55. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_09.uasset
  56. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Interface/BI_AvatarAnimBP.uasset
  57. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimationConfigs/AnimationConfig.uasset
  58. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimationConfigs/AnimationConfig_Base.uasset
  59. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_02_adjusted.uasset
  60. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_03_adjusted.uasset
  61. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_04_adjusted.uasset
  62. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_06_adjusted.uasset
  63. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_09_adjusted.uasset
  64. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_16.uasset
  65. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_23_adjusted.uasset
  66. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_25_adjusted.uasset
  67. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_MC_Tim_02_Take08_Anim01_Idle_Cascadeur.uasset
  68. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_MC_Tim_02_Take08_Anim02_Idle_Cascadeur.uasset
  69. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_MC_Tim_02_Take08_Anim02_LongIdle_Cut_Cascadeur.uasset
  70. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_MC_Tim_02_Take12_Anim02_Idle_Cascadeur.uasset
  71. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_02_adjusted.uasset
  72. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_03_adjusted.uasset
  73. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_04_adjusted.uasset
  74. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_06_adjusted.uasset
  75. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_09_adjusted.uasset
  76. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_16.uasset
  77. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_23_adjusted.uasset
  78. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_25_adjusted.uasset
  79. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim01_Idle_Cascadeur.uasset
  80. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim02_Idle_Cascadeur.uasset
  81. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_MC_Tim_02_Take08_Anim02_LongIdle_Cut_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/IdlePassive/AS_LL_JG_01_Idle_01_Wink.uasset
  84. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_02_adjusted.uasset
  85. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_03_adjusted.uasset
  86. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_04_adjusted.uasset
  87. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_06_adjusted.uasset
  88. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_07_Eyebrows.uasset
  89. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_08.uasset
  90. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_09_adjusted.uasset
  91. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_10.uasset
  92. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_11.uasset
  93. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_13.uasset
  94. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_14.uasset
  95. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_15.uasset
  96. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_17.uasset
  97. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_18_adjusted.uasset
  98. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_20.uasset
  99. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_23.uasset
  100. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_23_adjusted.uasset

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/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/EnumsAndStructs/E_ProjectActions.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/Modes/States/DT_ProjectStates.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.

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

@ -179,7 +179,7 @@ void UAIBaseManager::ClearAI()
return;
UAIBaseManager::SetNewState(EAvatarCoreAIState::Ready, true);
UAIBaseManager::ClearDelayedAnswerTimer();
UAIBaseManager::ClearMCPCommand();
//UAIBaseManager::ClearMCPCommand();
AnswerCache.Empty();
//Extend in Child
}
@ -275,6 +275,8 @@ TArray<FMCPToolInfo> UAIBaseManager::GetAvailableCommands()
void UAIBaseManager::RunMCPCommand(FString CommandName, FString Payload)
{
ClearRequestTimeout();
if (!CurrentConfig) {
BroadcastAIError(TEXT("No config loaded for RunCommand"), EAvatarCoreAIError::InvalidConfig);
return;
@ -330,7 +332,6 @@ void UAIBaseManager::ClearMCPCommand()
void UAIBaseManager::CommandFinished(const FString& Command, const FString& Payload)
{
UE_LOG(LogTemp, Warning, TEXT("Processing"));
SetNewState(EAvatarCoreAIState::Ready);
functionCallRunning = false;
if (bDebugMode)
@ -527,7 +528,7 @@ void UAIBaseManager::ClearRequestTimeout()
void UAIBaseManager::OnRequestTimeout()
{
BroadcastAIError(TEXT("Request timeout"), EAvatarCoreAIError::TimeoutError);
BroadcastAIError(TEXT("AI Manager request timeout"), EAvatarCoreAIError::TimeoutError);
SetNewState(EAvatarCoreAIState::Error);
}

2
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/MCP/MCPUnrealCommand.cpp

@ -64,7 +64,7 @@ void UMCPUnrealCommand::FailCommand(const FString& Payload)
void UMCPUnrealCommand::OnTimeout()
{
FailCommand(TEXT("{ \"error\": \"timeout\" }"));
FailCommand(TEXT("{ \"error\": \"mcp command timeout\" }"));
}
AActor* UMCPUnrealCommand::GetActorOfClass(UWorld* World, TSubclassOf<AActor> ActorClass) const

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

@ -552,7 +552,7 @@ void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& M
}
//Check if there is a valid function call
else if (RequestItem == EOpenAIRequestItem::function_call) {
ResetRequestTimeout();
ClearRequestTimeout();
FString CommandName;
TSharedPtr<FJsonObject> MessageJson;
TSharedRef<TJsonReader<>> FunctionReader = TJsonReaderFactory<>::Create(Message);
@ -577,11 +577,11 @@ void UAvatarCoreAIRealtime::OnWebSocketConnectionStringReceived(const FString& M
}
if (RequestItem == EOpenAIRequestItem::audio_transcript || RequestItem == EOpenAIRequestItem::text) { //Transcription Chunk
ResetRequestTimeout();
ClearRequestTimeout();
UAIBaseManager::OnAIResponse(DeltaResponse.delta, false);
}
else if (RequestItem == EOpenAIRequestItem::audio) { //Audio Chunk
ResetRequestTimeout();
ClearRequestTimeout();
// Ensure DeltaResponse.delta is treated as raw binary PCM data
TArray<uint8> PCMData;
uint32 Size = DeltaResponse.delta.Len();

216
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/n8n/n8n_connector.cpp

@ -0,0 +1,216 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "n8n/n8n_connector.h"
#include "Async/Async.h"
#include "Dom/JsonValue.h"
#include "HttpModule.h"
#include "Interfaces/IHttpResponse.h"
#include "Serialization/JsonSerializer.h"
namespace
{
static FString HttpRequestStatusToString(EHttpRequestStatus::Type Status)
{
switch (Status)
{
case EHttpRequestStatus::NotStarted: return TEXT("NotStarted");
case EHttpRequestStatus::Processing: return TEXT("Processing");
case EHttpRequestStatus::Failed: return TEXT("Failed");
//case EHttpRequestStatus::Failed_ConnectionError: return TEXT("Failed_ConnectionError");
case EHttpRequestStatus::Succeeded: return TEXT("Succeeded");
default: return TEXT("Unknown");
}
}
}
Un8n_connector::Un8n_connector()
{
}
void Un8n_connector::PostInitProperties()
{
Super::PostInitProperties();
EnsureRooted();
}
void Un8n_connector::BeginDestroy()
{
DeinitN8NConnector();
if (!HasAnyFlags(RF_ClassDefaultObject) && IsRooted())
{
RemoveFromRoot();
}
Super::BeginDestroy();
}
void Un8n_connector::EnsureRooted()
{
if (!HasAnyFlags(RF_ClassDefaultObject) && !IsRooted())
{
AddToRoot();
}
}
int32 Un8n_connector::StartWorkflow(const FString& payload)
{
EnsureRooted();
if (N8NURL.IsEmpty())
{
BroadcastError(INDEX_NONE, TEXT("StartWorkflow: url is empty"));
return INDEX_NONE;
}
int32 RequestId;
{
FScopeLock Lock(&ActiveRequestsCriticalSection);
RequestId = NextRequestId++;
}
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> HttpRequest = FHttpModule::Get().CreateRequest();
HttpRequest->SetURL(N8NURL);
HttpRequest->SetVerb(TEXT("POST"));
HttpRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json; charset=utf-8"));
// Validate payload as JSON (allow object or array)
{
TSharedPtr<FJsonValue> RootValue;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(payload);
if (!FJsonSerializer::Deserialize(Reader, RootValue) || !RootValue.IsValid())
{
BroadcastError(INDEX_NONE, TEXT("StartWorkflow: payload is not valid JSON"));
}
if (RootValue->Type != EJson::Object && RootValue->Type != EJson::Array)
{
BroadcastError(INDEX_NONE, TEXT("StartWorkflow: payload i JSON object or array"));
}
else
{
HttpRequest->SetHeader(TEXT("Accept"), TEXT("application/json"));
HttpRequest->SetContentAsString(payload);
}
}
HttpRequest->SetTimeout(N8NTimeout);
HttpRequest->OnProcessRequestComplete().BindLambda(
[this, RequestId](FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
HandleRequestComplete(RequestId, Request, Response, bWasSuccessful);
});
{
FScopeLock Lock(&ActiveRequestsCriticalSection);
ActiveRequestsById.Add(RequestId, HttpRequest);
}
if (!HttpRequest->ProcessRequest())
{
{
FScopeLock Lock(&ActiveRequestsCriticalSection);
ActiveRequestsById.Remove(RequestId);
}
BroadcastError(RequestId, TEXT("StartWorkflow: failed to start HTTP request"));
return RequestId;
}
return RequestId;
}
void Un8n_connector::InitN8NConnector(const FString& url, float timeout)
{
N8NURL = url;
N8NTimeout = timeout;
}
void Un8n_connector::DeinitN8NConnector()
{
ClearN8NConnector();
if (IsRooted())
{
RemoveFromRoot();
}
}
void Un8n_connector::ClearN8NConnector()
{
TArray<TSharedPtr<IHttpRequest, ESPMode::ThreadSafe>> RequestsToCancel;
{
FScopeLock Lock(&ActiveRequestsCriticalSection);
RequestGenerationId++;
ActiveRequestsById.GenerateValueArray(RequestsToCancel);
ActiveRequestsById.Empty();
}
for (const TSharedPtr<IHttpRequest, ESPMode::ThreadSafe>& Req : RequestsToCancel)
{
if (Req.IsValid())
{
Req->CancelRequest();
}
}
}
void Un8n_connector::HandleRequestComplete(int32 RequestId, FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
{
FScopeLock Lock(&ActiveRequestsCriticalSection);
ActiveRequestsById.Remove(RequestId);
}
if (!bWasSuccessful || !Response.IsValid())
{
const FString Url = Request.IsValid() ? Request->GetURL() : FString(TEXT("<null request>"));
const FString Status = Request.IsValid() ? HttpRequestStatusToString(Request->GetStatus()) : FString(TEXT("<unknown>"));
BroadcastError(RequestId, FString::Printf(TEXT("n8n webhook request failed (no HTTP response). url=%s status=%s"), *Url, *Status));
return;
}
const int32 Code = Response->GetResponseCode();
const FString Body = Response->GetContentAsString();
if (Code >= 200 && Code < 300)
{
BroadcastResult(RequestId, Body);
}
else
{
BroadcastError(RequestId, FString::Printf(TEXT("HTTP %d: %s"), Code, *Body));
}
}
void Un8n_connector::BroadcastError(int32 RequestId, const FString& ErrorMessage)
{
if (IsInGameThread())
{
OnN8NError.Broadcast(RequestId, ErrorMessage);
return;
}
const FString Copy = ErrorMessage;
AsyncTask(ENamedThreads::GameThread, [this, RequestId, Copy]()
{
OnN8NError.Broadcast(RequestId, Copy);
});
}
void Un8n_connector::BroadcastResult(int32 RequestId, const FString& Payload)
{
if (IsInGameThread())
{
OnN8NResult.Broadcast(RequestId, Payload);
return;
}
const FString Copy = Payload;
AsyncTask(ENamedThreads::GameThread, [this, RequestId, Copy]()
{
OnN8NResult.Broadcast(RequestId, Copy);
});
}

62
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/n8n/n8n_connector.h

@ -0,0 +1,62 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Http.h"
#include "n8n_connector.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnN8NError, int32, RequestId, const FString&, ErrorMessage);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnN8NResult, int32, RequestId, const FString&, Payload);
/**
*
*/
UCLASS(Blueprintable, BlueprintType)
class AVATARCORE_AI_API Un8n_connector : public UObject
{
GENERATED_BODY()
public:
Un8n_connector();
UPROPERTY(BlueprintAssignable, Category = "AvatarCoreAI|n8n|Events")
FOnN8NError OnN8NError;
UPROPERTY(BlueprintAssignable, Category = "AvatarCoreAI|n8n|Events")
FOnN8NResult OnN8NResult;
// Blueprint Functions - Lifecycle
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|n8n")
int32 StartWorkflow(const FString& payload);
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|n8n")
void InitN8NConnector(const FString& url, float timeout = 60);
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|n8n")
void DeinitN8NConnector();
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|n8n")
void ClearN8NConnector();
protected:
virtual void PostInitProperties() override;
virtual void BeginDestroy() override;
private:
void HandleRequestComplete(int32 RequestId, FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
void BroadcastError(int32 RequestId, const FString& ErrorMessage);
void BroadcastResult(int32 RequestId, const FString& Payload);
void EnsureRooted();
FString N8NURL;
float N8NTimeout = 60;
private:
FCriticalSection ActiveRequestsCriticalSection;
TMap<int32, TSharedPtr<IHttpRequest, ESPMode::ThreadSafe>> ActiveRequestsById;
int32 NextRequestId = 1;
uint32 RequestGenerationId = 0;
};

24
Unreal/Plugins/AvatarCore_FaceDetector/AvatarCore_FaceDetector.uplugin

@ -1,24 +0,0 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0",
"FriendlyName": "AvatarCore_FaceDetector",
"Description": "Tracking faces in webcame streams",
"Category": "Other",
"CreatedBy": "b.ReX",
"CreatedByURL": "",
"DocsURL": "",
"MarketplaceURL": "",
"SupportURL": "",
"CanContainContent": true,
"IsBetaVersion": false,
"IsExperimentalVersion": false,
"Installed": false,
"Modules": [
{
"Name": "AvatarCore_FaceDetector",
"Type": "Runtime",
"LoadingPhase": "Default"
}
]
}

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Content/BP_FaceDetector.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Content/Material/M_Face.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Content/Material/M_FaceArea.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Content/Misc/BP_TargetActor.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Content/Misc/Target.uasset (Stored with Git LFS)

Binary file not shown.

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

Binary file not shown.

60
Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/AvatarCore_FaceDetector.Build.cs

@ -1,60 +0,0 @@
// Copyright Epic Games, Inc. All Rights Reserved.
using System.IO;
using UnrealBuildTool;
public class AvatarCore_FaceDetector : ModuleRules
{
public AvatarCore_FaceDetector(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
}
);
PrivateIncludePaths.AddRange(
new string[] {
// ... add other private include paths required here ...
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
// ... add other public dependencies that you statically link with here ...
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"CoreUObject",
"Engine",
"Projects",
"Json",
"JsonUtilities",
"Slate",
"SlateCore",
// ... add private dependencies that you statically link with here ...
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
RuntimeDependencies.Add(Path.Combine(ModuleDirectory, "..", "ThirdParty", "FaceDetector.exe"));
RuntimeDependencies.Add(Path.Combine(ModuleDirectory, "..", "ThirdParty", "face_landmarker.task"));
}
}

20
Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Private/AvatarCore_FaceDetector.cpp

@ -1,20 +0,0 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#include "AvatarCore_FaceDetector.h"
#define LOCTEXT_NAMESPACE "FAvatarCore_FaceDetectorModule"
void FAvatarCore_FaceDetectorModule::StartupModule()
{
// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
}
void FAvatarCore_FaceDetectorModule::ShutdownModule()
{
// This function may be called during shutdown to clean up your module. For modules that support dynamic reloading,
// we call this function before unloading the module.
}
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(FAvatarCore_FaceDetectorModule, AvatarCore_FaceDetector)

307
Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Private/AvatarFaceDetectorSubsystem.cpp

@ -1,307 +0,0 @@
#include "AvatarFaceDetectorSubsystem.h"
#include "Async/Async.h"
#include "Interfaces/IPluginManager.h"
#include "Misc/Paths.h"
#include "Serialization/JsonReader.h"
#include "Serialization/JsonSerializer.h"
bool UAvatarFaceDetectorSubsystem::InitializeFaceDetector(const FFaceDetectorSettings& Settings)
{
ShutdownFaceDetector();
return StartProcess(Settings);
}
void UAvatarFaceDetectorSubsystem::ShutdownFaceDetector()
{
StopProcess();
}
bool UAvatarFaceDetectorSubsystem::IsFaceDetectorRunning() const
{
FProcHandle HandleCopy = ProcHandle;
return HandleCopy.IsValid() && FPlatformProcess::IsProcRunning(HandleCopy);
}
void UAvatarFaceDetectorSubsystem::Deinitialize()
{
ShutdownFaceDetector();
Super::Deinitialize();
}
FString UAvatarFaceDetectorSubsystem::ResolveThirdPartyFilePath(const FString& FileName) const
{
const TSharedPtr<IPlugin> Plugin = IPluginManager::Get().FindPlugin(TEXT("AvatarCore_FaceDetector"));
if (!Plugin.IsValid())
{
return FString();
}
const FString ThirdPartyDir = FPaths::Combine(Plugin->GetBaseDir(), TEXT("Source"), TEXT("ThirdParty"));
return FPaths::Combine(ThirdPartyDir, FileName);
}
bool UAvatarFaceDetectorSubsystem::StartProcess(const FFaceDetectorSettings& Settings)
{
FScopeLock Lock(&StateCriticalSection);
const FString ExePath = ResolveThirdPartyFilePath(TEXT("FaceDetector.exe"));
if (ExePath.IsEmpty() || !FPaths::FileExists(ExePath))
{
AsyncTask(ENamedThreads::GameThread, [this]()
{
OnFaceDetectorError.Broadcast(TEXT("FaceDetector.exe not found (expected under Plugin/Source/ThirdParty)."));
});
return false;
}
FString Args;
if (!Settings.WebcamName.IsEmpty())
{
Args += FString::Printf(TEXT(" --device \"%s\""), *Settings.WebcamName);
}
if (!Settings.ModelName.IsEmpty())
{
const FString ModelPath = ResolveThirdPartyFilePath(Settings.ModelName);
Args += FString::Printf(TEXT(" --model \"%s\""), *ModelPath);
}
Args += FString::Printf(TEXT(" --num_faces %d"), Settings.NumFaces);
if (Settings.bDebugMode)
{
Args += TEXT(" --debugMode");
}
Args += FString::Printf(TEXT(" --fps_limit %d"), Settings.FrameRateLimit);
FPlatformProcess::CreatePipe(ReadPipe, WritePipe);
bStopRequested = false;
StdoutRemainder.Reset();
ProcHandle = FPlatformProcess::CreateProc(
*ExePath,
*Args,
false,
true,
true,
nullptr,
0,
nullptr,
WritePipe,
ReadPipe);
if (!ProcHandle.IsValid())
{
FPlatformProcess::ClosePipe(ReadPipe, WritePipe);
ReadPipe = nullptr;
WritePipe = nullptr;
AsyncTask(ENamedThreads::GameThread, [this]()
{
OnFaceDetectorError.Broadcast(TEXT("Failed to launch FaceDetector.exe"));
});
return false;
}
ReaderFuture = Async(EAsyncExecution::Thread, [this]()
{
ReaderThreadMain();
});
return true;
}
void UAvatarFaceDetectorSubsystem::StopProcess()
{
TFuture<void> LocalFuture;
FProcHandle LocalProc;
void* LocalReadPipe = nullptr;
void* LocalWritePipe = nullptr;
{
FScopeLock Lock(&StateCriticalSection);
bStopRequested = true;
LocalFuture = MoveTemp(ReaderFuture);
LocalProc = ProcHandle;
LocalReadPipe = ReadPipe;
LocalWritePipe = WritePipe;
ProcHandle.Reset();
ReadPipe = nullptr;
WritePipe = nullptr;
StdoutRemainder.Reset();
}
if (LocalProc.IsValid())
{
FPlatformProcess::TerminateProc(LocalProc, true);
FPlatformProcess::CloseProc(LocalProc);
}
if (LocalFuture.IsValid())
{
LocalFuture.Wait();
}
if (LocalReadPipe != nullptr || LocalWritePipe != nullptr)
{
FPlatformProcess::ClosePipe(LocalReadPipe, LocalWritePipe);
}
}
void UAvatarFaceDetectorSubsystem::ReaderThreadMain()
{
while (!bStopRequested)
{
FString NewOutput;
{
FScopeLock Lock(&StateCriticalSection);
if (ReadPipe == nullptr)
{
break;
}
NewOutput = FPlatformProcess::ReadPipe(ReadPipe);
}
if (NewOutput.IsEmpty())
{
if (!IsFaceDetectorRunning())
{
break;
}
FPlatformProcess::Sleep(0.01f);
continue;
}
FString Combined;
{
FScopeLock Lock(&StateCriticalSection);
Combined = StdoutRemainder + NewOutput;
StdoutRemainder.Reset();
}
TArray<FString> Lines;
Combined.ParseIntoArrayLines(Lines, false);
const bool bEndsWithNewline = Combined.EndsWith(TEXT("\n")) || Combined.EndsWith(TEXT("\r\n"));
if (!bEndsWithNewline && Lines.Num() > 0)
{
FScopeLock Lock(&StateCriticalSection);
StdoutRemainder = Lines.Pop();
}
for (const FString& Line : Lines)
{
const FString Trimmed = Line.TrimStartAndEnd();
if (!Trimmed.IsEmpty())
{
HandleLineOnWorkerThread(Trimmed);
}
}
}
if (!bStopRequested)
{
AsyncTask(ENamedThreads::GameThread, [this]()
{
OnFaceDetectorError.Broadcast(TEXT("FaceDetector process stopped."));
});
}
}
void UAvatarFaceDetectorSubsystem::HandleLineOnWorkerThread(const FString& Line)
{
TSharedPtr<FJsonObject> Root;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Line);
if (!FJsonSerializer::Deserialize(Reader, Root) || !Root.IsValid())
{
AsyncTask(ENamedThreads::GameThread, [this, Line]()
{
OnFaceDetectorLog.Broadcast(Line);
});
return;
}
FString Type;
if (!Root->TryGetStringField(TEXT("type"), Type))
{
AsyncTask(ENamedThreads::GameThread, [this, Line]()
{
OnFaceDetectorLog.Broadcast(Line);
});
return;
}
if (Type.Equals(TEXT("error"), ESearchCase::IgnoreCase))
{
FString Message;
Root->TryGetStringField(TEXT("message"), Message);
AsyncTask(ENamedThreads::GameThread, [this, Message]()
{
OnFaceDetectorError.Broadcast(Message);
});
return;
}
if (Type.Equals(TEXT("log"), ESearchCase::IgnoreCase))
{
FString Message;
Root->TryGetStringField(TEXT("message"), Message);
AsyncTask(ENamedThreads::GameThread, [this, Message]()
{
OnFaceDetectorLog.Broadcast(Message);
});
return;
}
if (Type.Equals(TEXT("faces"), ESearchCase::IgnoreCase))
{
TArray<FDetectedFace> Faces;
const TArray<TSharedPtr<FJsonValue>>* FacesJson = nullptr;
if (Root->TryGetArrayField(TEXT("faces"), FacesJson) && FacesJson != nullptr)
{
Faces.Reserve(FacesJson->Num());
for (const TSharedPtr<FJsonValue>& FaceVal : *FacesJson)
{
if (!FaceVal.IsValid() || FaceVal->Type != EJson::Object)
{
continue;
}
const TSharedPtr<FJsonObject> FaceObj = FaceVal->AsObject();
if (!FaceObj.IsValid())
{
continue;
}
double X = 0.0;
double Y = 0.0;
double IdNum = (double)INDEX_NONE;
bool bActive = false;
FaceObj->TryGetNumberField(TEXT("x"), X);
FaceObj->TryGetNumberField(TEXT("y"), Y);
FaceObj->TryGetNumberField(TEXT("id"), IdNum);
FaceObj->TryGetBoolField(TEXT("active"), bActive);
FDetectedFace Face;
Face.Position = FVector2D((float)X, (float)Y);
Face.Id = (int32)IdNum;
Face.TrackingLost = !bActive;
Faces.Add(Face);
}
}
AsyncTask(ENamedThreads::GameThread, [this, Faces = MoveTemp(Faces)]() mutable
{
OnFaceDetectorUpdate.Broadcast(Faces);
});
return;
}
AsyncTask(ENamedThreads::GameThread, [this, Line]()
{
OnFaceDetectorLog.Broadcast(Line);
});
}

14
Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Public/AvatarCore_FaceDetector.h

@ -1,14 +0,0 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Modules/ModuleManager.h"
class FAvatarCore_FaceDetectorModule : public IModuleInterface
{
public:
/** IModuleInterface implementation */
virtual void StartupModule() override;
virtual void ShutdownModule() override;
};

56
Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Public/AvatarFaceDetectorSubsystem.h

@ -1,56 +0,0 @@
#pragma once
#include "CoreMinimal.h"
#include "HAL/PlatformProcess.h"
#include "Async/Future.h"
#include "Subsystems/GameInstanceSubsystem.h"
#include "FaceDetectorTypes.h"
#include "AvatarFaceDetectorSubsystem.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FFaceDetectorErrorSig, const FString&, ErrorMessage);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FFaceDetectorLogSig, const FString&, LogMessage);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FFaceDetectorUpdateSig, const TArray<FDetectedFace>&, Faces);
UCLASS()
class AVATARCORE_FACEDETECTOR_API UAvatarFaceDetectorSubsystem : public UGameInstanceSubsystem
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category="FaceDetector")
bool InitializeFaceDetector(const FFaceDetectorSettings& Settings);
UFUNCTION(BlueprintCallable, Category="FaceDetector")
void ShutdownFaceDetector();
UFUNCTION(BlueprintCallable, Category="FaceDetector")
bool IsFaceDetectorRunning() const;
UPROPERTY(BlueprintAssignable, Category="FaceDetector")
FFaceDetectorErrorSig OnFaceDetectorError;
UPROPERTY(BlueprintAssignable, Category="FaceDetector")
FFaceDetectorLogSig OnFaceDetectorLog;
UPROPERTY(BlueprintAssignable, Category="FaceDetector")
FFaceDetectorUpdateSig OnFaceDetectorUpdate;
virtual void Deinitialize() override;
private:
bool StartProcess(const FFaceDetectorSettings& Settings);
void StopProcess();
void ReaderThreadMain();
void HandleLineOnWorkerThread(const FString& Line);
FString ResolveThirdPartyFilePath(const FString& FileName) const;
private:
FProcHandle ProcHandle;
void* ReadPipe = nullptr;
void* WritePipe = nullptr;
TAtomic<bool> bStopRequested = false;
TFuture<void> ReaderFuture;
FCriticalSection StateCriticalSection;
FString StdoutRemainder;
};

45
Unreal/Plugins/AvatarCore_FaceDetector/Source/AvatarCore_FaceDetector/Public/FaceDetectorTypes.h

@ -1,45 +0,0 @@
#pragma once
#include "CoreMinimal.h"
#include "FaceDetectorTypes.generated.h"
USTRUCT(BlueprintType)
struct FDetectedFace
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
FVector2D Position = FVector2D::ZeroVector;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
int32 Id = INDEX_NONE;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
bool TrackingLost = false;
};
USTRUCT(BlueprintType)
struct FFaceDetectorSettings
{
GENERATED_BODY()
//Name of the webcam (pick first if ambigious)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
FString WebcamName;
//Create a DebugWindow to see detected faces
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
bool bDebugMode = false;
//Override Model (full path to modelfile)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
FString ModelName;
//Limit Framerate of Videostream (0 to disable)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
int32 FrameRateLimit = 24;
//Max faces to track
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="FaceDetector")
int32 NumFaces = 5;
};

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/FaceDetector.exe

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/blaze_face_short_range.tflite

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/face_landmarker.task

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/ffmpeg.exe

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/ffplay.exe

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_FaceDetector/Source/ThirdParty/ffprobe.exe

Binary file not shown.

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/Widgets/BP_LookAtTest.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/Widgets/Debug/Pages/W_DebugAvatarCoreManager.uasset (Stored with Git LFS)

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

4
Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Public/AvatarCore_ManagerEnums.h

@ -27,9 +27,9 @@ enum class EAvatarCoreModuleState : uint8
UENUM(BlueprintType)
enum class EAvatarState : uint8 {
None UMETA(DisplayName = "None"),
Idle UMETA(DisplayName = "Avatar ready"),
Listening UMETA(DisplayName = "Avatar listening"),
Thinking UMETA(DisplayName = "Avatar thinking"),
Talking UMETA(DisplayName = "Avatar talking"),
Error UMETA(DisplayName = "Avatar is confused")
IdleActive UMETA(DisplayName = "Avatar idle active"),
IdlePassive UMETA(DisplayName = "Avatar idle passive")
};

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/Nodding/CF_AvatarCore_Animation_Nodding_09.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/AnimationConfigs/AnimationConfig.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimationConfigs/AnimationConfig_Base.uasset (Stored with Git LFS)

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/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/Idle/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/Idle/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/Idle/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_LL_JG_01_Idle_02_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdleActive/AS_LL_JG_01_Idle_25_adjusted.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_Take12_Anim02_Idle_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/IdlePassive/AS_LL_JG_01_Idle_23_adjusted.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