#define DEAD_ZONE 0.125
float gamepad_mouse_x, gamepad_mouse_y;
bool update_mouse;
bool prev_button_a_pressed;
void repeatedly_execute_always()
{
if(pad != null)
{
if(pad.IsButtonDown(eGamepad_ButtonA) && !prev_button_a_pressed)
{
mouse.Click(eMouseLeft);
}
prev_button_a_pressed = pad.IsButtonDown(eGamepad_ButtonA);
float x_lstick = pad.GetAxis(eGamepad_AxisLeftX);
float y_lstick = pad.GetAxis(eGamepad_AxisLeftY);
if( x_lstick < -DEAD_ZONE || x_lstick > DEAD_ZONE ||
y_lstick < -DEAD_ZONE || y_lstick > DEAD_ZONE )
{
if(update_mouse) {
gamepad_mouse_x = IntToFloat(mouse.x);
gamepad_mouse_y = IntToFloat(mouse.y);
update_mouse = false;
}
gamepad_mouse_x += 10.0 * x_lstick;
gamepad_mouse_y += 10.0 * y_lstick;
mouse.SetPosition(FloatToInt(gamepad_mouse_x, eRoundDown) ,
FloatToInt(gamepad_mouse_y, eRoundDown));
} else {
update_mouse = true;
}
}
}