#pragma once #import #import #import #import #include class Emulator; class MacOSGameController { private: Emulator* _emu; GCController* _controller; GCExtendedGamepad* _input; CHHapticEngine* _haptics; id _player; bool _buttonState[24] = {}; int16_t _axisState[4] = {}; void HandleDpad(GCControllerDirectionPad* dpad); void HandleThumbstick(GCControllerDirectionPad* stick, int stickNumber); public: MacOSGameController(Emulator* emu, GCController* controller); ~MacOSGameController(); bool IsGameController(GCController* controller); bool IsButtonPressed(int buttonNumber); std::optional GetAxisPosition(int axis); void SetForceFeedback(uint16_t magnitude); };