GamePadDevice::GamePadDevice(const int irr_index, const std::string &name, const int axis_count, const int button_count, GamepadConfig *configuration) { m_type = DT_GAMEPAD; m_prev_axis_directions = NULL; m_configuration = configuration; GamepadConfig *config = static_cast<GamepadConfig*>(m_configuration); if(m_configuration->getNumberOfButtons()<button_count) { config->setNumberOfButtons(button_count); } if(m_configuration->getNumberOfAxes()<axis_count) { config->setNumberOfAxis(axis_count); } m_prev_axis_directions = new Input::AxisDirection[axis_count]; m_prev_axis_value = new int[axis_count]; m_axis_ok = new bool[axis_count]; m_irr_index = irr_index; m_name = name; for (int i = 0; i < axis_count; i++) { m_prev_axis_directions[i] = Input::AD_NEUTRAL; m_prev_axis_value[i] = -1; m_axis_ok[i] = false; } for(int n=0; n<SEvent::SJoystickEvent::NUMBER_OF_BUTTONS; n++) m_buttonPressed[n] = false; } // GamePadDevice