public SDL2Gamepad(IntPtr gamepadHandle, string driverId) { _gamepadHandle = gamepadHandle; _buttonsUserMapping = new List <ButtonMappingEntry>(); Name = SDL_GameControllerName(_gamepadHandle); Id = driverId; Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; // Enable motion tracking if (Features.HasFlag(GamepadFeaturesFlag.Motion)) { SDL_GameControllerSetSensorEnabled(_gamepadHandle, SDL_SensorType.SDL_SENSOR_ACCEL, SDL_bool.SDL_TRUE); SDL_GameControllerSetSensorEnabled(_gamepadHandle, SDL_SensorType.SDL_SENSOR_GYRO, SDL_bool.SDL_TRUE); } }
private GamepadFeaturesFlag GetFeaturesFlag() { GamepadFeaturesFlag result = GamepadFeaturesFlag.None; if (SDL_GameControllerHasSensor(_gamepadHandle, SDL_SensorType.SDL_SENSOR_ACCEL) == SDL_bool.SDL_TRUE && SDL_GameControllerHasSensor(_gamepadHandle, SDL_SensorType.SDL_SENSOR_GYRO) == SDL_bool.SDL_TRUE) { result |= GamepadFeaturesFlag.Motion; } int error = SDL_GameControllerRumble(_gamepadHandle, 0, 0, 100); if (error == 0) { result |= GamepadFeaturesFlag.Rumble; } return(result); }