Hi,
I’ve looked at blueprint script in your project. One issue is you compute distance between world origin and pawn location. When pawn is too far away from world origin this distance will be very big and can’t be precisely enough stored in a FVector. Instead you should compute pawn distance from a local origin.
Like: distance = length(0 - pawnLocation);
and then when distnase is bigger than some value shift the global origin:
SetWorldOrigin(GetWorldOrigin() + distance);
World origin is stored as a FIntVector, so each axis should can be in range ~[-2.1b : 2.1b]. Before setting a new world origin you should clamp it to int32 limits.