We have detected a problem while setting the location or rotation of character with a camera component. If you do a SetActorLocation or SetActorRotation on a method called by a Timer, the camera makes a weird turn, just for a milisec. This can be tested really fast with a ThirdPersonExample template and a few lines of code:
FTimerHandle TimerHandle;
GetWorldTimerManager().SetTimer(TimerHandle, this, &AThirdPersonTestRotation::SetRotationByTimer, 1.0f, false);
void AThirdPersonTestRotation::SetRotationByTimer()
{
FRotator NewRotation = GetActorRotation();
NewRotation.Yaw -= 20.0f;
SetActorRotation(NewRotation);
}
Our conclusion (may not be correct, but fits the bug noticed): We think this is caused due to the timer working on a different thread (definitely not working on the main logic pipeline). The components of an actor have to follow this last one, and they should do it on the global tick, having a small delay after rotating or moving the player. This would be unnoticed with any component but the camera, as it is the one defining what you see on your screen.