Code:
//Routine to determine which axis is being acted upong the most due to it being
//inevitable that more than one axis will change at a time
//this checks all values after a specified time and determines which one changed the most
//get a position reading from all axises
var.roll.1 = MapRange(Joystick1.roll, -1,1, 0,1)
var.yaw.1 = MapRange(Joystick1.yaw, -1,1, 0,1)
var.pitch.1 = MapRange(Joystick1.pitch, -1,1, 0,1)
var.x.1 = MapRange(Joystick1.x, -1,1, 0,1)
var.y.1 = MapRange(Joystick1.y, -1,1, 0,1)
var.z.1 = MapRange(Joystick1.z, -1,1, 0,1)
//wait a bit, then get positions again
wait 200ms
var.roll.2 = MapRange(Joystick1.roll, -1,1, 0,1)
var.yaw.2 = MapRange(Joystick1.yaw, -1,1, 0,1)
var.pitch.2 = MapRange(Joystick1.pitch, -1,1, 0,1)
var.x.2 = MapRange(Joystick1.x, -1,1, 0,1)
var.y.2 = MapRange(Joystick1.y, -1,1, 0,1)
var.z.2 = MapRange(Joystick1.z, -1,1, 0,1)
//compare second reading to first usign subtraction, then use th absolute function so that even negative values
//return whole numbers. the greated var.whatever.diff value will be the axis that has changed the most
var.roll.diff = abs(var.roll.2 - var.roll.1)
var.yaw.diff = abs(var.yaw.2 - var.yaw.1)
var.pitch.diff = abs(var.pitch.2 - var.pitch.1)
var.x.diff = abs(var.x.2 - var.x.1)
var.y.diff = abs(var.y.2 - var.y.1)
var.z.diff = abs(var.z.2 - var.z.1)
//super-sloppy if tree to figure out which var.*.diff is the greatest, and then act accordingly..
//as of now it just spits out which axis is being acted upon up in the debug bar at the top
//of the scripting window..
if ((var.roll.diff > var.yaw.diff) and (var.roll.diff > var.pitch.diff) and (var.roll.diff > var.x.diff) and (var.roll.diff > var.y.diff) and (var.roll.diff > var.z.diff))
var.roll.dir = sign(var.roll.2 - var.roll.1)
if (var.roll.dir = -1)
debug = "Roll (Twist Left)"
elseif (var.roll.dir = 1)
debug = "Roll (Twist Right)"
endif
else if ((var.yaw.diff > var.roll.diff) and (var.yaw.diff > var.pitch.diff) and (var.yaw.diff > var.x.diff) and (var.yaw.diff > var.y.diff) and (var.yaw.diff > var.z.diff))
var.yaw.dir = sign(var.yaw.2 - var.yaw.1)
if (var.yaw.dir = -1)
debug = "Yaw (Tilt Right)"
elseif (var.yaw.dir = 1)
debug = "Yaw (Tilt Left)"
endif
else if ((var.pitch.diff > var.roll.diff) and (var.pitch.diff > var.yaw.diff) and (var.pitch.diff > var.x.diff) and (var.pitch.diff > var.y.diff) and (var.pitch.diff > var.z.diff))
var.pitch.dir = sign(var.pitch.2 - var.pitch.1)
if (var.pitch.dir = -1)
debug = "Pitch (Tilt Forewards)"
elseif (var.pitch.dir = 1)
debug = "Pitch (Tilt Backwards)"
endif
elseif ((var.x.diff > var.yaw.diff) and (var.x.diff > var.pitch.diff) and (var.x.diff > var.roll.diff) and (var.x.diff > var.y.diff) and (var.x.diff > var.z.diff))
var.x.dir = sign(var.x.2 - var.x.1)
if (var.x.dir = -1)
debug = "X (Slide Left)"
elseif (var.x.dir = 1)
debug = "X (Slide Right)"
endif
else if ((var.y.diff > var.roll.diff) and (var.y.diff > var.pitch.diff) and (var.y.diff > var.x.diff) and (var.y.diff > var.yaw.diff) and (var.y.diff > var.z.diff))
var.y.dir = sign(var.y.2 - var.y.1)
if (var.y.dir = -1)
debug = "Y (Slide Forewards)"
elseif (var.y.dir = 1)
debug = "Y (Slide Backwards)"
endif
else if ((var.z.diff > var.roll.diff) and (var.z.diff > var.yaw.diff) and (var.z.diff > var.x.diff) and (var.z.diff > var.y.diff) and (var.z.diff > var.pitch.diff))
var.z.dir = sign(var.z.2 - var.z.1)
if (var.z.dir = -1)
debug = "Z (Pull Up)"
elseif (var.z.dir = 1)
debug = "Z (Push Down)"
endif
else
debug = " "
endif
Edit: tweaked the code a bit to give you a better idea of what axis is being affected... I'm sure i'll have a useable script up in a bit
Bookmarks