public static Vector3 GetDirection(this IRotateableYX obj) { float RadiansX = GetRotationXRadians(obj); float RadiansY = GetRotationYRadians(obj); return(new Vector3( (float)(Math.Cos(RadiansX) * Math.Sin(RadiansY)), (float)Math.Sin(RadiansX), (float)(Math.Cos(RadiansX) * Math.Cos(RadiansY)))); }
public static void SetArbitaryRotationsYX(this IRotateableYX obj, float rotationY, float rotationX) { rotationX -= (float)(360 * Math.Floor(rotationX / 360)); if (rotationX > 270) { rotationX -= 360; } else if (rotationX > 90) { rotationX = 180 - rotationX; rotationY += 180; } obj.RotationX = rotationX; obj.RotationY = rotationY; }
public static void SetRotationXRadians(this IRotateableYX obj, float value) { obj.RotationX = value * (float)(180.0 / Math.PI); }
public static float GetRotationXRadians(this IRotateableYX obj) { return(obj.RotationX * (float)(Math.PI / 180.0)); }