3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/deps/input/InputDeviceMapper.h"
8#include "mc/deps/input/InputMode.h"
9#include "mc/deps/input/enums/ButtonState.h"
10#include "mc/deps/input/enums/DirectionId.h"
41 ::ll::TypedStorage<4, 4, uint> id;
42 ::ll::TypedStorage<1, 1, ::ButtonState> currentState;
43 ::ll::TypedStorage<4, 4, float> triggerThreshold;
51 ::ll::TypedStorage<1, 1, ::DirectionId> id;
52 ::ll::TypedStorage<4, 4, int> xAxis;
53 ::ll::TypedStorage<4, 4, int> yAxis;
54 ::ll::TypedStorage<1, 1, bool> raiseTurnEvents;
62 ::ll::TypedStorage<4, 4, uint> nameId;
63 ::ll::TypedStorage<4, 4, float> repeatInterval;
71 ::ll::TypedStorage<8, 64, ::std::unordered_multimap<int, ::GameControllerMapper::ButtonAttributes>>
72 mGamePadButtonToButtonIdMap;
73 ::ll::TypedStorage<8, 64, ::std::unordered_multimap<int, ::GameControllerMapper::TriggerState>>
74 mTriggerToButtonIdMap;
75 ::ll::TypedStorage<8, 64, ::std::unordered_multimap<int, ::GameControllerMapper::DirectionAttributes>>
76 mStickToDirectionIdMap;
77 ::ll::TypedStorage<8, 64, ::std::unordered_multimap<int, uint>> mStickToButtonIdMap;
78 ::ll::TypedStorage<8, 64, ::std::unordered_multimap<::DirectionId, uint>> mStickDirectionToButtonIdMap;
79 ::ll::TypedStorage<8, 16, ::std::set<uint>> mExclusiveButtonIdSet;
80 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::GameControllerStickEvent>> mPreviousStickEvents;
81 ::ll::TypedStorage<1, 1, bool> mMappingChanged;
86 GameControllerMappingData& operator=(GameControllerMappingData
const&);
87 GameControllerMappingData(GameControllerMappingData
const&);
92 MCAPI GameControllerMappingData();
94 MCAPI GameControllerMappingData(::GameControllerMapper::GameControllerMappingData&&);
96 MCAPI ::GameControllerMapper::GameControllerMappingData&
97 operator=(::GameControllerMapper::GameControllerMappingData&&);
99 MCAPI ~GameControllerMappingData();
107 MCAPI
void* $ctor(::GameControllerMapper::GameControllerMappingData&&);
121 ::ll::TypedStorage<1, 1, bool> turnStickActive;
122 ::ll::TypedStorage<4, 8, ::glm::vec2> lastTurnStickPos;
123 ::ll::TypedStorage<4, 4, int> controllerId;
127 using GameControllerButtonId = int;
129 using GamePadTriggerId = int;
131 using GamePadStickId = int;
133 using GamePadButtonToButtonIdMap = ::std::unordered_multimap<int, ::GameControllerMapper::ButtonAttributes>;
135 using GamePadTriggerToButtonIdMap = ::std::unordered_multimap<int, ::GameControllerMapper::TriggerState>;
137 using GamePadStickToDirectionIdMap = ::std::unordered_multimap<int, ::GameControllerMapper::DirectionAttributes>;
139 using GamePadStickToButtonIdMap = ::std::unordered_multimap<int, uint>;
141 using GamePadStickDirectionToButtonIdMap = ::std::unordered_multimap<::DirectionId, uint>;
143 using GamePadExclusiveButtonIdSet = ::std::set<uint>;
145 using GamePadStickEvents = ::std::unordered_map<int, ::GameControllerStickEvent>;
150 ::ll::TypedStorage<8, 8, double> mLastTime;
151 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, double>> mLastTurnButtonTimeSeconds;
152 ::ll::TypedStorage<8, 24, ::std::vector<::GameControllerMapper::GamepadStickTurnData>> mStickTurnData;
153 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::GameControllerMapper::GameControllerMappingData>>
160 virtual void setMapping(
161 ::InputEventQueue& eventQueue,
162 ::BindingFactory
const& bindingFactory,
163 ::InputMapping
const& inputMapping,
167 virtual void clearMapping(
int controllerId) ;
170 ::InputEventQueue& eventQueue,
171 ::Bedrock::NotNullNonOwnerPtr<::ControllerIDtoClientMap>
const& map
174 virtual ::InputMode getInputMode() const ;
176 virtual
void changeControllerId(
int oldId,
int newId) ;
178 virtual ::std::vector<::std::weak_ptr<::IGameController>> _getGameControllers() = 0;
180 virtual ::GameControllerInputMapping const& getGameControllerMapping(::InputMapping const& inputMapping) = 0;
182 virtual ~GameControllerMapper() ;
188 MCAPI GameControllerMapper();
190 MCAPI
void _enqueueButtonDownUpEvents(
191 ::InputEventQueue& eventQueue,
193 ::DirectionId direction
196 MCAPI
void _handleButtonEvent(
197 ::InputEventQueue& eventQueue,
198 ::GameControllerButtonEvent const& buttonEvent,
200 int alternateControllerId
204 _handleConnectionStateChangedEvent(::InputEventQueue& eventQueue,
bool controllerConnected,
int controllerId);
207 _handleStickEvent(::InputEventQueue& eventQueue, ::GameControllerStickEvent const& stickEvent,
int controllerId);
209 MCAPI
void _handleTriggerEvent(
210 ::InputEventQueue& eventQueue,
211 ::GameControllerTriggerEvent const& triggerEvent,
215 MCAPI
void _reprocessPreviousStickEvents(
216 ::InputEventQueue& eventQueue,
218 ::std::vector<
int> const& handledEventStickIds
221 MCAPI
void _tickTurn(::InputEventQueue& eventQueue);
239 MCAPI
void $setMapping(
240 ::InputEventQueue& eventQueue,
241 ::BindingFactory const& bindingFactory,
242 ::InputMapping const& inputMapping,
246 MCAPI
void $clearMapping(
int controllerId);
249 $tick(::InputEventQueue& eventQueue, ::Bedrock::NotNullNonOwnerPtr<::ControllerIDtoClientMap> const& map);
251 MCFOLD ::InputMode $getInputMode() const;
253 MCAPI
void $changeControllerId(
int oldId,
int newId);
Definition BindingFactory.h:5
Definition GameControllerMapper.h:5
static MCAPI void ** $vftable()
Definition IGameController.h:5
Definition ControllerIDtoClientMap.h:13
Definition GameControllerMapper.h:19
Definition GameControllerMapper.h:23
Definition GameControllerMapper.h:25
Definition GameControllerMapper.h:17
Definition GameControllerStickEvent.h:5
Definition GameControllerTriggerEvent.h:5