public void ProcessJoystickEvent(JoyHatEvent ev) { int id = ev.Which; if (IsJoystickInstanceValid(id)) { int index = sdl_instanceid_to_joysticks[id]; JoystickDevice<Sdl2JoystickDetails> joystick = (JoystickDevice<Sdl2JoystickDetails>)joysticks[index]; // Todo: map hat to an extra axis joystick.Details.PacketNumber = Math.Max(0, unchecked(joystick.Details.PacketNumber + 1)); } else { Debug.Print("[SDL2] Invalid joystick id {0} in {1}", id, ev.Type); } }
public void ProcessJoystickEvent(JoyHatEvent ev) { int id = ev.Which; if (IsJoystickInstanceValid(id)) { int index = sdl_instanceid_to_joysticks[id]; JoystickDevice<Sdl2JoystickDetails> joystick = (JoystickDevice<Sdl2JoystickDetails>)joysticks[index]; if (ev.Hat >= 0 && ev.Hat < JoystickState.MaxHats) { joystick.Details.Hat[ev.Hat] = new JoystickHatState(TranslateHat(ev.Value)); } else { Debug.Print("[SDL2] Hat {0} out of range [0, {1}]", ev.Hat, JoystickState.MaxHats); } joystick.Details.PacketNumber = Math.Max(0, unchecked(joystick.Details.PacketNumber + 1)); } else { Debug.Print("[SDL2] Invalid joystick id {0} in {1}", id, ev.Type); } }