static void handleJoyMotion(const SDL_JoyAxisEvent &event) { int joy=event.which; assert(joyDevMap); if ((joy<0)||(joy>=(int)joyDevMap->size())) return; int dev=(*joyDevMap)[joy]; assert(devState); if ((dev<0)||(dev>=(int)devState->size())) return; Input::DevState &m_state((*devState)[dev]); Input::DevState old(m_state); switch (event.axis) { case 0: m_state.x=joyScale(event.value); break; case 1: m_state.y=joyScale(-event.value); break; } if (m_state!=old) Input::devStateHandler(m_state); }
// onDrawScene void DlgSplineTest::onDrawScene() { // draw spline D3DPaint().setFill(RGBA(0, 1, 0)); D3DPaint().splinePath(m_path); m_state(); }
//! \return true if it was a device key (the key was handled) static bool handleDevKey(const SDL_KeyboardEvent &e, int keyDev) { // map keyboard dev no to real dev no assert((keyDev>=0)&&(keyDev<2)); int dev=keyDevMap[keyDev]; assert(devState); assert((dev>=0)&&(dev<(int)devState->size())); Input::DevState &m_state((*devState)[dev]); Input::DevState old(m_state); bool pressed=e.state==SDL_PRESSED; SDLKey k(e.keysym.sym); if (k==keys[keyDev][0]) { // up if (pressed) m_state.y=1; else if (m_state.y==1) m_state.y=0; }else if (k==keys[keyDev][1]) { // down if (pressed) m_state.y=-1; else if (m_state.y==-1) m_state.y=0; }else if (k==keys[keyDev][2]) { // left if (pressed) m_state.x=-1; else if (m_state.x==-1) m_state.x=0; }else if (k==keys[keyDev][3]) { // right if (pressed) m_state.x=1; else if (m_state.x==1) m_state.x=0; }else if (k==keys[keyDev][4]) { // button 1 if (pressed) m_state.buttons|=1; else m_state.buttons&=~1; }else if (k==keys[keyDev][5]) { // button 1 if (pressed) m_state.buttons|=2; else m_state.buttons&=~2; } if (m_state!=old) { Input::devStateHandler(m_state); return true; } return false; }
static void handleJoyButton(const SDL_JoyButtonEvent &e) { int joy=e.which; assert(joyDevMap); if ((joy<0)||(joy>=(int)joyDevMap->size())) return; int dev=(*joyDevMap)[joy]; assert(devState); if ((dev<0)||(dev>=(int)devState->size())) return; Input::DevState &m_state((*devState)[dev]); Input::DevState old(m_state); if (e.state==SDL_PRESSED) m_state.buttons|=1<<e.button; else m_state.buttons&=~(1<<e.button); if (m_state!=old) Input::devStateHandler(m_state); }