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&&);
98 MCAPI ::GameControllerMapper::GameControllerMappingData&
99 operator=(::GameControllerMapper::GameControllerMappingData&&);
101 MCAPI ~GameControllerMappingData();
109 MCAPI
void* $ctor(::GameControllerMapper::GameControllerMappingData&&);
123 ::ll::TypedStorage<1, 1, bool> turnStickActive;
124 ::ll::TypedStorage<4, 8, ::glm::vec2> lastTurnStickPos;
125 ::ll::TypedStorage<4, 4, int> controllerId;
129 using GameControllerButtonId = int;
131 using GamePadTriggerId = int;
133 using GamePadStickId = int;
135 using GamePadButtonToButtonIdMap = ::std::unordered_multimap<int, ::GameControllerMapper::ButtonAttributes>;
137 using GamePadTriggerToButtonIdMap = ::std::unordered_multimap<int, ::GameControllerMapper::TriggerState>;
139 using GamePadStickToDirectionIdMap = ::std::unordered_multimap<int, ::GameControllerMapper::DirectionAttributes>;
141 using GamePadStickToButtonIdMap = ::std::unordered_multimap<int, uint>;
143 using GamePadStickDirectionToButtonIdMap = ::std::unordered_multimap<::DirectionId, uint>;
145 using GamePadExclusiveButtonIdSet = ::std::set<uint>;
147 using GamePadStickEvents = ::std::unordered_map<int, ::GameControllerStickEvent>;
152 ::ll::TypedStorage<8, 8, double> mLastTime;
153 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, double>> mLastTurnButtonTimeSeconds;
154 ::ll::TypedStorage<8, 24, ::std::vector<::GameControllerMapper::GamepadStickTurnData>> mStickTurnData;
155 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::GameControllerMapper::GameControllerMappingData>>
162 virtual void setMapping(
163 ::InputEventQueue& inputMapping,
164 ::BindingFactory
const& controllerId,
165 ::InputMapping
const&,
169 virtual void clearMapping(
int controllerId) ;
172 ::InputEventQueue& eventQueue,
173 ::Bedrock::NotNullNonOwnerPtr<::ControllerIDtoClientMap>
const& map
176 virtual ::InputMode getInputMode() const ;
178 virtual
void changeControllerId(
int oldId,
int newId) ;
180 virtual ::std::vector<::std::weak_ptr<::IGameController>> _getGameControllers() = 0;
182 virtual ::GameControllerInputMapping const& getGameControllerMapping(::InputMapping const& inputMapping) = 0;
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);
234 $setMapping(::InputEventQueue& inputMapping, ::BindingFactory const& controllerId, ::InputMapping const&,
int);
236 MCAPI
void $clearMapping(
int controllerId);
239 $tick(::InputEventQueue& eventQueue, ::Bedrock::NotNullNonOwnerPtr<::ControllerIDtoClientMap> const& map);
241 MCFOLD ::InputMode $getInputMode() const;
243 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:5
Definition GameControllerMapper.h:19
Definition GameControllerMapper.h:23
Definition GameControllerMapper.h:25
Definition GameControllerMapper.h:17
Definition GameControllerStickEvent.h:5
Definition GameControllerTriggerEvent.h:5