void APlayerCameraManager::PlayWorldCameraShake(UWorld* InWorld, TSubclassOf<class UCameraShake> Shake, FVector Epicenter, float InnerRadius, float OuterRadius, float Falloff, bool bOrientShakeTowardsEpicenter ) { for( FConstPlayerControllerIterator Iterator = InWorld->GetPlayerControllerIterator(); Iterator; ++Iterator ) { APlayerController* PlayerController = *Iterator; if (PlayerController && PlayerController->PlayerCameraManager != NULL) { float ShakeScale = CalcRadialShakeScale(PlayerController->PlayerCameraManager, Epicenter, InnerRadius, OuterRadius, Falloff); if (bOrientShakeTowardsEpicenter && PlayerController->GetPawn() != NULL) { FVector CamLoc; FRotator CamRot; PlayerController->PlayerCameraManager->GetCameraViewPoint(CamLoc, CamRot); PlayerController->ClientPlayCameraShake(Shake, ShakeScale, ECameraAnimPlaySpace::UserDefined, (Epicenter - CamLoc).Rotation()); } else { PlayerController->ClientPlayCameraShake(Shake, ShakeScale); } } } }