How to integrate character settings to predict a trajectory

Hello everyone. I am trying to figure out how to incorporate things like my character’s mass, gravity scale, and braking deceleration falling settings from the movement component into the “Suggest Projectile Velocity Custom Arc” node to get a better launch velocity prediction. Right now if I just hook up the Start Pos and End Pos inputs and tweak the gravity override and arc param, I’ll get a decent result, but then if I move the end position to a different location either closer or further away from the launch point, I have to re-tweak all my settings to get an accurate launch that will put me at the target location.

The goal is to be able to place a target basically anywhere in my world, and be able to launch my character so that it accurately lands on the target position every time without tweaking settings much.

This is the engine code for the SuggestProjectileVelocityCustomArc node:

bool UGameplayStatics::SuggestProjectileVelocity_CustomArc(const UObject* WorldContextObject, FVector& OutLaunchVelocity, FVector StartPos, FVector EndPos, float OverrideGravityZ /*= 0*/, float ArcParam /*= 0.5f */)
{
	/* Make sure the start and end aren't the same location */
	FVector const StartToEnd = EndPos - StartPos;
	float const StartToEndDist = StartToEnd.Size();

	UWorld const* const World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull);
	if (World && StartToEndDist > UE_KINDA_SMALL_NUMBER)
	{
		const float GravityZ = FMath::IsNearlyEqual(OverrideGravityZ, 0.0f) ? World->GetGravityZ() : OverrideGravityZ;

		// choose arc according to the arc param
		FVector const StartToEndDir = StartToEnd / StartToEndDist;
		FVector LaunchDir = FMath::Lerp(FVector::UpVector, StartToEndDir, ArcParam).GetSafeNormal();

		// v = sqrt ( g * dx^2 / ( (dx tan(angle) + dz) * 2 * cos(angle))^2 ) )

		FRotator const LaunchRot = LaunchDir.Rotation();
		float const Angle = FMath::DegreesToRadians(LaunchRot.Pitch);

		float const Dx = StartToEnd.Size2D();
		float const Dz = StartToEnd.Z;
		float const NumeratorInsideSqrt = (GravityZ * FMath::Square(Dx) * 0.5f);
		float const DenominatorInsideSqrt = (Dz - (Dx * FMath::Tan(Angle))) * FMath::Square(FMath::Cos(Angle));
		float const InsideSqrt = NumeratorInsideSqrt / DenominatorInsideSqrt;
		if (InsideSqrt >= 0.f)
		{
			// there exists a solution
			float const Speed = FMath::Sqrt(InsideSqrt);	// this is the mag of the vertical component
			OutLaunchVelocity = LaunchDir * Speed;
			return true;
		}
	}

	OutLaunchVelocity = FVector::ZeroVector;
	return false;
}

I recreated this in blueprints so that I could easily tweak the “code” without having to recompile the engine a bunch. The blueprint can be seen here:
SuggestProjectileVelocity_CustomArc

I’m trying to incorporate the character’s mass, gravity scale, and braking deceleration falling settings into the above code to try and get a more accurate launch velocity. Can anyone think of a better way to do this? Or have any input on where/how I should implement the character movement settings to make this work better?

Thank you!