I tried that but for some reason world my player is not at (0,0,0) location after setting world origin to player. This gets accumulated and eventually player gets so far away from origin even with origin shifting. I set my origin like this:
GetWorld()->SetNewWorldOrigin(FIntVector(GetActorLocation()));
This is called from my player pawn.
EDIT: Nevermind, I needed to add + **GetWorld()->OriginLocation. **Now my pawn strangely slides when I shift origin but I guess thats because of my pawn implementation. Thanks for the answer.
EDIT2: Shifting world origin works perfectly fine and better solution to moving actors one by one. Pawn sliding bug was because of my other implementations.