Oh look
I'm a complete dumbass and forgot to use the Z distance.
EDIT: Fixed this stuff.
//Slope calculation
function gameConnection::GPWS_Tick3(%this)
{
if(isObject(%this.player))
%vehicle = %this.player.getObjectMount();
else
return;
if(isObject(%vehicle))
{
%isDriving = (%this.player.getObjectMount().getControllingClient() == %this);
%isFlyableVehicle = (%vehicle.getClassName() $= "FlyingVehicle" ? 1 : %vehicle.getDatablock().lift > 0); //a way to check if WheeledVehicles can fly
}
else
return;
if(%isDriving && %isFlyableVehicle)
{
%vehicle.pos100MSago = %vehicle.position;
%this.schedule(500,"gpws_slopecalc", %vehicle);
}
}
function gameConnection::GPWS_SlopeCalc(%this, %vehicle)
{
if(isObject(%vehicle))
{
%isDriving = (%this.player.getObjectMount().getControllingClient() == %this);
%isFlyableVehicle = (%vehicle.getClassName() $= "FlyingVehicle" ? 1 : %vehicle.getDatablock().lift > 0); //a way to check if WheeledVehicles can fly
}
else
return;
if(%isDriving && %isFlyableVehicle)
{
%p1_x = getword(%vehicle.pos100msago, 0);
%p1_y = getword(%vehicle.pos100msago, 1);
%p1_z = getword(%vehicle.pos100msago, 2);
%p2_x = getword(%vehicle.position, 0);
%p2_y = getword(%vehicle.position, 1);
%p2_z = getword(%vehicle.position, 2);
%xdist = %p2_x - %p1_x;
%ydist = %p2_y - %p1_y;
%zdist = %p2_z - %p1_z;
%runvector = msqrt( (%xdist * %xdist) + (%ydist * %ydist) ); //pythagorean theorem
%vehicle.angleOfAscent = mRadToDeg(matan(%zdist, %runvector));
}
}