Separated joystick pointer coordinates from mouse pointer coordinates.

This commit is contained in:
Claudio Ciccani 2006-06-09 15:18:04 +00:00
parent 52c5d9c5b7
commit 6acc6dd0c4
2 changed files with 48 additions and 29 deletions

View file

@ -50,7 +50,7 @@ glutForceJoystickFunc( void )
{
if (g_game && joystick && joystick_func) {
joystick_func( g_game->buttons,
g_game->cx, g_game->cy, g_game->cz );
g_game->jx, g_game->jy, g_game->jz );
}
}
@ -270,7 +270,7 @@ __glutInputEvent( DFBInputEvent *e )
if (joystick_func) {
__glutSetWindow( g_game );
joystick_func( g_game->buttons,
g_game->cx, g_game->cy, g_game->cz );
g_game->jx, g_game->jy, g_game->jz );
}
}
else {
@ -287,7 +287,7 @@ __glutInputEvent( DFBInputEvent *e )
if (joystick_func) {
__glutSetWindow( g_game );
joystick_func( g_game->buttons,
g_game->cx, g_game->cy, g_game->cz );
g_game->jx, g_game->jy, g_game->jz );
}
}
else {
@ -299,36 +299,52 @@ __glutInputEvent( DFBInputEvent *e )
}
break;
case DIET_AXISMOTION:
switch (e->axis) {
case DIAI_X:
if (e->flags & DIEF_AXISABS)
g_game->cx = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->cx += e->axisrel;
break;
case DIAI_Y:
if (e->flags & DIEF_AXISABS)
g_game->cy = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->cy += e->axisrel;
break;
case DIAI_Z:
if (e->flags & DIEF_AXISABS)
g_game->cz = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->cz += e->axisrel;
break;
default:
return;
}
if (e->device_id == DIDID_JOYSTICK) {
switch (e->axis) {
case DIAI_X:
if (e->flags & DIEF_AXISABS)
g_game->jx = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->jx += e->axisrel;
break;
case DIAI_Y:
if (e->flags & DIEF_AXISABS)
g_game->jy = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->jy += e->axisrel;
break;
case DIAI_Z:
if (e->flags & DIEF_AXISABS)
g_game->jz = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->jz += e->axisrel;
break;
default:
break;
}
if (joystick_func) {
__glutSetWindow( g_game );
joystick_func( g_game->buttons,
g_game->cx, g_game->cy, g_game->cz );
g_game->jx, g_game->jy, g_game->jz );
}
}
else if (e->axis != DIAI_Z) {
else {
switch (e->axis) {
case DIAI_X:
if (e->flags & DIEF_AXISABS)
g_game->cx = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->cx += e->axisrel;
break;
case DIAI_Y:
if (e->flags & DIEF_AXISABS)
g_game->cy = e->axisabs;
else if (e->flags & DIEF_AXISREL)
g_game->cy += e->axisrel;
break;
default:
return;
}
if (e->buttons && motion_func) {
__glutSetWindow( g_game );
motion_func( g_game->cx, g_game->cy );

View file

@ -61,10 +61,13 @@ typedef struct __GlutWindow_s {
IDirectFBSurface *surface;
IDirectFBGL *gl;
/* pointer position in fullscreen mode */
/* cursor position in fullscreen mode */
int cx;
int cy;
int cz;
/* joystick position */
int jx;
int jy;
int jz;
/* pressed modifiers */
int modifiers;
/* pressed buttons */