public static Tuple <int, float> GetFlightFacingDirectionAndPitchDirection(MyPlayer modPlayer) { int octantDirection = 0; int octantPitch = 0; // since the player is mirrored, there's really only 3 ordinal positions we care about // up angle, no angle and down angle // we don't go straight up or down cos it looks weird as shit switch (modPlayer.mouseWorldOctant) { case -3: case -2: case -1: octantPitch = -1; break; case 0: case 4: octantPitch = 0; break; case 1: case 2: case 3: octantPitch = 1; break; } // for direction we have to do things a bit different. Vector2 mouseVector = modPlayer.GetMouseVectorOrDefault(); if (mouseVector == Vector2.Zero) { // we're probably trying to run direction on a player who isn't ours, don't do this. They can control their own dir. octantDirection = 0; } else { octantDirection = mouseVector.X < 0 ? -1 : 1; } return(new Tuple <int, float>(octantDirection, octantPitch * 45f)); }