From ce84a5dc58c3b0181d1218e27c5d3a98837d79ee Mon Sep 17 00:00:00 2001 From: "j.foucher" Date: Mon, 2 Mar 2026 15:33:07 +0100 Subject: [PATCH] Fix head tracking on remote clients: activate PostureComponent in OnRep PostureComponent starts with bActive=false and waits for OnConversationConnected, which only fires on the server (WebSocket). Remote clients never got bActive=true, so CurrentActiveAlpha stayed at 0 and all head/eye rotation was zeroed out. Now OnRep_ConversationState also sets Posture->bActive alongside TargetActor, matching what was already done for FacialExpression and LipSync components. Co-Authored-By: Claude Opus 4.6 --- .../Private/PS_AI_ConvAgent_ElevenLabsComponent.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Unreal/PS_AI_Agent/Plugins/PS_AI_ConvAgent/Source/PS_AI_ConvAgent/Private/PS_AI_ConvAgent_ElevenLabsComponent.cpp b/Unreal/PS_AI_Agent/Plugins/PS_AI_ConvAgent/Source/PS_AI_ConvAgent/Private/PS_AI_ConvAgent_ElevenLabsComponent.cpp index 4b3e241..2c02f77 100644 --- a/Unreal/PS_AI_Agent/Plugins/PS_AI_ConvAgent/Source/PS_AI_ConvAgent/Private/PS_AI_ConvAgent_ElevenLabsComponent.cpp +++ b/Unreal/PS_AI_Agent/Plugins/PS_AI_ConvAgent/Source/PS_AI_ConvAgent/Private/PS_AI_ConvAgent_ElevenLabsComponent.cpp @@ -1233,14 +1233,16 @@ void UPS_AI_ConvAgent_ElevenLabsComponent::OnRep_ConversationState() // replicated to their owning client (bOnlyRelevantToOwner=true). if (bNetIsConversing && NetConversatingPawn) { + Posture->bActive = true; Posture->TargetActor = NetConversatingPawn; Posture->ResetBodyTarget(); Posture->bEnableBodyTracking = true; UE_LOG(LogPS_AI_ConvAgent_ElevenLabs, Log, - TEXT("[NET-REP] Posture TargetActor set to %s"), *NetConversatingPawn->GetName()); + TEXT("[NET-REP] Posture ACTIVATED, TargetActor set to %s"), *NetConversatingPawn->GetName()); } else { + Posture->bActive = false; Posture->TargetActor = nullptr; Posture->bEnableBodyTracking = false; UE_LOG(LogPS_AI_ConvAgent_ElevenLabs, Warning,