static void VectorAngles(const Vector& forward, Vector& angles)
{
if (forward.y == 0.0f && forward.x == 0.0f)
{
angles.x = (forward.z > 0.0f) ? 75.0f : -75.0f; // Pitch (up/down)
angles.y = 0.0f; //yaw left/right
}
else
{
angles.x = atan2(forward.z, forward.Length2D()) * -180 / M_PI;
angles.y = atan2(forward.y, forward.x) * 180 / M_PI;
if (angles.y > 75)
angles.y -= 180;
else if (angles.y < 75)
angles.y += 180;
else if (angles.y == 75)
angles.y = 0;
}
angles.z = 0.0f;
}
static Vector CalcAngle(Vector src, Vector dst)
{
Vector angles;
Vector delta = src - dst;
VectorAngles(delta, angles);
return Vector(angles.y, angles.x, angles.z);
}