perhaps passing in by reference?
UFUNCTION(BlueprintPure, meta = (Step = 0.1))
bool ParabolaParabola3D(UPARAM(ref) FProjectileParams& ProjectileParams, UPARAM(ref) FTargetParams& TargetParams, float Step, float& CollisionTime);

That way you modify the structs you pass in and then they remain changed after the function executes.
No setter needed.