void SG_EXPORT _sgJoystickUpdate(void) { SGenum i, j; for(i = 0; i < _sg_joyNum; i++) for(j = 0; j < _sg_joyJoys[i]->numbuttons; j++) if(_sg_joyJoys[i]->bcurr[j]) sgEntityEventSignal(1, (SGenum)SG_EVF_JOYSTICKBUTH, i, j); }
void SG_CALL _sg_cbJoystickMove(SGuint joy, SGuint axis, float pos) { memcpy(_sg_joyJoys[joy]->aprev, _sg_joyJoys[joy]->acurr, _sg_joyJoys[joy]->numaxis * sizeof(float)); _sg_joyJoys[joy]->acurr[axis] = pos; size_t i; for(i = 0; i < _sg_joyJoys[joy]->numaxis; i++) _sg_joyJoys[joy]->adelt[i] = _sg_joyJoys[joy]->acurr[i] - _sg_joyJoys[joy]->aprev[i]; sgEntityEventSignal(1, (SGenum)SG_EVF_JOYSTICKMOVE, joy, _sg_joyJoys[joy]->acurr, _sg_joyJoys[joy]->numaxis); }
void SG_EXPORT _sg_cbJoystickMove(void* joystick, float* axis) { SGuint joy = 0; if(psgmCoreJoystickGetID != NULL) psgmCoreJoystickGetID(joystick, &joy); memcpy(_sg_joyJoys[joy]->aprev, _sg_joyJoys[joy]->acurr, _sg_joyJoys[joy]->numaxis * sizeof(float)); memcpy(_sg_joyJoys[joy]->acurr, axis, _sg_joyJoys[joy]->numaxis * sizeof(float)); size_t i; for(i = 0; i < _sg_joyJoys[joy]->numaxis; i++) _sg_joyJoys[joy]->adelt[i] = _sg_joyJoys[joy]->acurr[i] - _sg_joyJoys[joy]->aprev[i]; sgEntityEventSignal(1, (SGenum)SG_EVF_JOYSTICKMOVE, joy, axis, _sg_joyJoys[joy]->numaxis); }
void SG_CALL _sg_cbJoystickButton(SGuint joy, SGuint button, SGbool down) { _sg_joyJoys[joy]->bprev[button] = _sg_joyJoys[joy]->bcurr[button]; _sg_joyJoys[joy]->bcurr[button] = down; SGbool pressed = _sg_joyJoys[joy]->bcurr[button] && !_sg_joyJoys[joy]->bprev[button]; SGenum evt = 0; if(pressed) evt = SG_EVF_JOYSTICKBUTP; else if(!down) evt = SG_EVF_JOYSTICKBUTR; else return; sgEntityEventSignal(1, evt, joy, button); }
void SG_EXPORT _sg_cbJoystickButton(void* joystick, SGuint button, SGbool down) { SGuint joy = 0; if(psgmCoreJoystickGetID != NULL) psgmCoreJoystickGetID(joystick, &joy); _sg_joyJoys[joy]->bprev[button] = _sg_joyJoys[joy]->bcurr[button]; _sg_joyJoys[joy]->bcurr[button] = down; SGbool pressed = _sg_joyJoys[joy]->bcurr[button] && !_sg_joyJoys[joy]->bprev[button]; SGenum evt = 0; if(pressed) evt = SG_EVF_JOYSTICKBUTP; else if(!down) evt = SG_EVF_JOYSTICKBUTR; else return; sgEntityEventSignal(1, evt, joy, button); }