Hi there,
we have this simple code. On Windows it performed ok. I tried on my Mac M1 Max today and it ran at 10FPS. I then found that it was this code and removed the SetActorRotation line. Back to 100FPS.
void ASimpleWeaponPickup::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
FRotator rotation;
rotation.Yaw = DeltaTime * RotationSpeed;
SetActorRotation(GetActorRotation() + rotation);
}
I then fiddled around a bit and changed SetActorRotation to AddActorLocalRotation(RotationSpeed * DeltaTime * FRotator(0, 1, 0));
. Back to 100FPS (+ Rotation working :D).
But WHY is the initial performance so freaking bad? I would have never expected it. And why sooo much worse on Mac? On Windows SetActor was also 3x slower than the new method, but still totally fine.
Here is a profiler image (Pickup Rotation uses the SetActor code and New the AddActorLocalRotation method)
Best,
Bennet