MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / OnAxisMotion

Method OnAxisMotion

Source/Engine/Platform/SDL/SDLInput.cpp:737–786  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

735}
736
737void SDLGamepad::OnAxisMotion(SDL_GamepadAxis sdlAxis, int16 value)
738{
739 GamepadAxis axis;
740 int16 deadzone = 1; // SDL reports -1 for centered axis?
741 float valueNormalized = NormalizeAxisValue(value);
742 switch (sdlAxis)
743 {
744 case SDL_GAMEPAD_AXIS_LEFTX:
745 axis = GamepadAxis::LeftStickX;
746 deadzone = LEFT_STICK_THRESHOLD;
747 _state.Buttons[(int32)GamepadButton::LeftStickLeft] = value > LEFT_STICK_THRESHOLD;
748 _state.Buttons[(int32)GamepadButton::LeftStickRight] = value < -LEFT_STICK_THRESHOLD;
749 break;
750 case SDL_GAMEPAD_AXIS_LEFTY:
751 axis = GamepadAxis::LeftStickY;
752 deadzone = LEFT_STICK_THRESHOLD;
753 _state.Buttons[(int32)GamepadButton::LeftStickUp] = value < -LEFT_STICK_THRESHOLD;
754 _state.Buttons[(int32)GamepadButton::LeftStickDown] = value > LEFT_STICK_THRESHOLD;
755 valueNormalized = -valueNormalized;
756 break;
757 case SDL_GAMEPAD_AXIS_RIGHTX:
758 deadzone = RIGHT_STICK_THRESHOLD;
759 axis = GamepadAxis::RightStickX;
760 _state.Buttons[(int32)GamepadButton::RightStickLeft] = value > RIGHT_STICK_THRESHOLD;
761 _state.Buttons[(int32)GamepadButton::RightStickRight] = value < -RIGHT_STICK_THRESHOLD;
762 break;
763 case SDL_GAMEPAD_AXIS_RIGHTY:
764 deadzone = RIGHT_STICK_THRESHOLD;
765 axis = GamepadAxis::RightStickY;
766 _state.Buttons[(int32)GamepadButton::RightStickUp] = value < -RIGHT_STICK_THRESHOLD;
767 _state.Buttons[(int32)GamepadButton::RightStickDown] = value > RIGHT_STICK_THRESHOLD;
768 valueNormalized = -valueNormalized;
769 break;
770 case SDL_GAMEPAD_AXIS_LEFT_TRIGGER:
771 deadzone = TRIGGER_THRESHOLD;
772 axis = GamepadAxis::LeftTrigger;
773 _state.Buttons[(int32)GamepadButton::LeftTrigger] = value > TRIGGER_THRESHOLD;
774 break;
775 case SDL_GAMEPAD_AXIS_RIGHT_TRIGGER:
776 deadzone = TRIGGER_THRESHOLD;
777 axis = GamepadAxis::RightTrigger;
778 _state.Buttons[(int32)GamepadButton::RightTrigger] = value > TRIGGER_THRESHOLD;
779 break;
780 default:
781 return;
782 }
783 if (value <= deadzone && value >= -deadzone)
784 valueNormalized = 0.0f;
785 _state.Axis[(int32)axis] = valueNormalized;
786}
787
788void SDLGamepad::OnButtonState(SDL_GamepadButton sdlButton, bool pressed)
789{

Callers 1

HandleEventMethod · 0.80

Calls 1

NormalizeAxisValueFunction · 0.85

Tested by

no test coverage detected