3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/deps/input/InputBindingMode.h"
8#include "mc/deps/input/InputMode.h"
9#include "mc/deps/input/enums/ButtonState.h"
10#include "mc/deps/input/enums/DirectionId.h"
11#include "mc/deps/input/enums/FocusImpact.h"
12#include "mc/deps/input/enums/RawInputType.h"
49 ::ll::TypedStorage<4, 4, ::InputMode> mCurrentInputMode;
50 ::ll::TypedStorage<4, 4, ::InputBindingMode> mCurrentBindingMode;
51 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mInputMappingStack;
52 ::ll::TypedStorage<8, 64, ::std::unordered_set<uint>> mButtonsDown;
53 ::ll::TypedStorage<8, 64, ::std::unordered_set<int>> mTriggeredChordsSources;
54 ::ll::TypedStorage<4, 4, int> mCurrentChordSource;
55 ::ll::TypedStorage<1, 1, bool> mSuspendInput;
56 ::ll::TypedStorage<1, 1, bool> mSuspendDirectionalInput;
57 ::ll::TypedStorage<1, 1, bool> mDisableInput;
63 MCAPI ~InputHandlerState();
73 using InputModeHandler = ::std::function<void(::InputMode, ::IClientInstance&)>;
75 using ButtonPressHandler = ::std::function<void(::FocusImpact, ::IClientInstance&)>;
77 using TextCharHandler = ::std::function<void(::std::string
const&, ::FocusImpact, ::IClientInstance&)>;
79 using PointerLocationHandler =
80 ::std::function<void(::PointerLocationEventData
const&, ::FocusImpact, ::IClientInstance&)>;
82 using PointerLocationWithIdHandler =
83 ::std::function<void(::PointerLocationWithIdEventData
const&, ::IClientInstance&)>;
85 using ClearPointerLocationWithIdHandler =
86 ::std::function<void(::ClearPointerLocationWithIdEventData
const&, ::IClientInstance&)>;
88 using ClearPointerLocationsHandler = ::std::function<void(::IClientInstance&)>;
90 using DirectionHandler = ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>;
92 using TurnHandler = ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>;
94 using VectorHandler = ::std::function<void(
short,
float,
float,
float, ::FocusImpact, ::IClientInstance&)>;
96 using AnyInputHandler = ::std::function<void(::IClientInstance&)>;
98 using RawInputHandler = ::std::function<void(
int, ::RawInputType, ::ButtonState,
bool, ::IClientInstance&)>;
100 using AddClientHandler = ::std::function<void(::IMinecraftGame*,
int,
bool)>;
102 using ChangeUserHandler = ::std::function<void(::IMinecraftGame*,
int,
bool)>;
104 using ControllerConnectionStateChangeHandler = ::std::function<void(::IClientInstance&,
bool,
int)>;
106 using TouchPadTouchHandler =
107 ::std::function<void(::TouchPadTouchEventData
const&, ::FocusImpact, ::IClientInstance&)>;
109 using ControlOptionHandler = ::std::function<void(::ControlOptionEventData
const&, ::IClientInstance&)>;
111 using NumberOfEnabledControlOptionsHandler =
112 ::std::function<void(::NumberOfEnabledControlOptionsEventData
const&, ::IClientInstance&)>;
114 using OverlappingControlsHandler = ::std::function<void(::OverlappingControlsEventData
const&, ::IClientInstance&)>;
116 using PotentialOverlappingControlsHandler = ::std::function<void(::IClientInstance&)>;
118 using InputModeHandlers = ::std::vector<::std::function<void(::InputMode, ::IClientInstance&)>>;
120 using ButtonHandlerMap =
121 ::std::multimap<uint, ::std::pair<bool, ::std::function<void(::FocusImpact, ::IClientInstance&)>>>;
123 using TextCharHandlers =
124 ::std::vector<::std::function<void(::std::string
const&, ::FocusImpact, ::IClientInstance&)>>;
126 using PointerLocationHandlers =
127 ::std::vector<::std::function<void(::PointerLocationEventData
const&, ::FocusImpact, ::IClientInstance&)>>;
129 using PointerLocationWithIdHandlers =
130 ::std::vector<::std::function<void(::PointerLocationWithIdEventData
const&, ::IClientInstance&)>>;
132 using ClearPointerLocationWithIdHandlers =
133 ::std::vector<::std::function<void(::ClearPointerLocationWithIdEventData
const&, ::IClientInstance&)>>;
135 using ClearPointerLocationsHandlers = ::std::vector<::std::function<void(::IClientInstance&)>>;
137 using DirectionHandlerMap =
138 ::std::multimap<::DirectionId, ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>>;
140 using VectorHandlers =
141 ::std::vector<::std::function<void(
short,
float,
float,
float, ::FocusImpact, ::IClientInstance&)>>;
143 using TouchPadHandlers =
144 ::std::vector<::std::function<void(::TouchPadTouchEventData
const&, ::FocusImpact, ::IClientInstance&)>>;
146 using PointerLocationWithIdHandlersMap =
147 ::std::map<uint, ::std::function<void(::PointerLocationWithIdEventData
const&, ::IClientInstance&)>>;
149 using ControlOptionHandlers =
150 ::std::vector<::std::function<void(::ControlOptionEventData
const&, ::IClientInstance&)>>;
152 using NumberOfEnabledControlOptionsHandlers =
153 ::std::vector<::std::function<void(::NumberOfEnabledControlOptionsEventData
const&, ::IClientInstance&)>>;
155 using OverlappingControlsHandlers =
156 ::std::vector<::std::function<void(::OverlappingControlsEventData
const&, ::IClientInstance&)>>;
158 using PotentialOverlappingControlsHandlers = ::std::vector<::std::function<void(::IClientInstance&)>>;
163 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(::InputMode, ::IClientInstance&)>>> mInputModeHandlers;
167 ::std::multimap<uint, ::std::pair<bool, ::std::function<void(::FocusImpact, ::IClientInstance&)>>>>
168 mButtonDownHandlerMap;
172 ::std::multimap<uint, ::std::pair<bool, ::std::function<void(::FocusImpact, ::IClientInstance&)>>>>
177 ::std::vector<::std::function<void(::std::string
const&, ::FocusImpact, ::IClientInstance&)>>>
182 ::std::vector<::std::function<void(::PointerLocationEventData
const&, ::FocusImpact, ::IClientInstance&)>>>
183 mPointerLocationHandlers;
187 ::std::vector<::std::function<void(::PointerLocationWithIdEventData
const&, ::IClientInstance&)>>>
188 mPointerLocationWithIdHandlers;
192 ::std::vector<::std::function<void(::ClearPointerLocationWithIdEventData
const&, ::IClientInstance&)>>>
193 mClearPointerLocationWithIdHandlers;
194 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(::IClientInstance&)>>> mClearPointerLocationsHandlers;
198 ::std::multimap<::DirectionId, ::std::function<void(
float,
float, ::FocusImpact, ::IClientInstance&)>>>
199 mDirectionHandlerMap;
200 ::ll::TypedStorage<8, 64, ::std::function<void(::IClientInstance&)>> mAnyInputHandler;
201 ::ll::TypedStorage<8, 64, ::std::function<void(
int, ::RawInputType, ::ButtonState,
bool, ::IClientInstance&)>>
203 ::ll::TypedStorage<8, 64, ::std::function<void(::IMinecraftGame*,
int,
bool)>> mAddClientHandler;
204 ::ll::TypedStorage<8, 64, ::std::function<void(::IMinecraftGame*,
int,
bool)>> mChangeUserHandler;
205 ::ll::TypedStorage<8, 64, ::std::function<void(::IClientInstance&,
bool,
int)>>
206 mControllerConnectionStateChangeHandler;
210 ::std::vector<::std::function<void(::TouchPadTouchEventData
const&, ::FocusImpact, ::IClientInstance&)>>>
215 ::std::map<uint, ::std::function<void(::PointerLocationWithIdEventData
const&, ::IClientInstance&)>>>
217 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(::ControlOptionEventData
const&, ::IClientInstance&)>>>
218 mControlOptionHandlers;
222 ::std::vector<::std::function<void(::NumberOfEnabledControlOptionsEventData
const&, ::IClientInstance&)>>>
223 mNumberOfEnabledControlOptionsHandlers;
227 ::std::vector<::std::function<void(::OverlappingControlsEventData
const&, ::IClientInstance&)>>>
228 mOverlappingControlsHandlers;
229 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(::IClientInstance&)>>>
230 mPotentialOverlappingControlsHandlers;
231 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::InputEventQueue>> mInputEventQueue;
232 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ButtonChordTracker>> mChordTracker;
233 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ButtonRepeater>> mButtonRepeater;
234 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::InputDeviceMapper>>> mInputDeviceMappers;
235 ::ll::TypedStorage<8, 8, ::BindingFactoryMap&> mBindingFactoryMap;
236 ::ll::TypedStorage<8, 8, ::InputMappingFactoryMap&> mInputMappingFactoryMap;
237 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::InputHandler::InputHandlerState>> mPerIdState;
238 ::ll::TypedStorage<4, 4, int> mPrimaryGameControllerId;
243 InputHandler& operator=(InputHandler
const&);
244 InputHandler(InputHandler
const&);
251 ::BindingFactoryMap& bindingFactoryMap,
252 ::InputMappingFactoryMap& mappingFactoryMap,
253 ::InputMode startingInputMode,
254 ::Bedrock::NotNullNonOwnerPtr<::Input::Debug::ISplitscreenRedirect>
const& debugSplitscreenInputRedirect
258 _handleMappingChange(::InputMapping
const* newMapping, ::InputMapping
const* oldMapping,
int controllerId);
260 MCAPI
void changeControllerId(
int oldId,
int newId);
262 MCAPI
void clearInvalidDownKeys(
int controllerId);
264 MCAPI
void initNewControllerIdOwner(
int controllerId, ::InputMode initialInputMode);
266 MCAPI
void popInputMapping(
int controllerId);
268 MCAPI
void pushInputMapping(::std::string
const& mappingName,
int controllerId);
270 MCAPI
void refreshInputMapping(
int controllerId);
272 MCAPI
void registerAddClientHandler(::std::function<
void(::IMinecraftGame*,
int,
bool)> handler);
274 MCFOLD
void registerAnyInputHandler(::std::function<
void(::IClientInstance&)> handler);
276 MCAPI
void registerButtonDownHandler(
277 ::std::string buttonName,
278 ::std::function<
void(::FocusImpact, ::IClientInstance&)> handler,
282 MCAPI
void registerButtonUpHandler(
283 ::std::string buttonName,
284 ::std::function<
void(::FocusImpact, ::IClientInstance&)> handler,
288 MCAPI
void registerChangeUserHandler(::std::function<
void(::IMinecraftGame*,
int,
bool)> handler);
290 MCAPI
void registerClearPointerLocationWithIdHandler(
291 ::std::function<
void(::ClearPointerLocationWithIdEventData
const&, ::IClientInstance&)> handler
294 MCAPI
void registerClearPointerLocationsHandler(::std::function<
void(::IClientInstance&)> handler);
297 registerControlOptionHandler(::std::function<
void(::ControlOptionEventData
const&, ::IClientInstance&)> handler);
300 registerControllerConnectionStateChangeHandler(::std::function<
void(::IClientInstance&,
bool,
int)> handler);
302 MCAPI
void registerInputModeHandler(::std::function<
void(::InputMode, ::IClientInstance&)> handler);
304 MCAPI
void registerNumberOfEnabledControlOptionsHandler(
305 ::std::function<
void(::NumberOfEnabledControlOptionsEventData
const&, ::IClientInstance&)> handler
308 MCAPI
void registerOverlappingControlsHandler(
309 ::std::function<
void(::OverlappingControlsEventData
const&, ::IClientInstance&)> handler
312 MCAPI
void registerPointerLocationHandler(
313 ::std::function<
void(::PointerLocationEventData
const&, ::FocusImpact, ::IClientInstance&)> handler
316 MCAPI
void registerPointerLocationWithIdHandler(
317 ::std::function<
void(::PointerLocationWithIdEventData
const&, ::IClientInstance&)> handler
320 MCAPI
void registerPotentialOverlappingControlsHandler(::std::function<
void(::IClientInstance&)> handler);
322 MCAPI
void registerRawInputHandler(
323 ::std::function<
void(
int, ::RawInputType, ::ButtonState,
bool, ::IClientInstance&)> handler
327 registerTextCharHandler(::std::function<
void(::std::string
const&, ::FocusImpact, ::IClientInstance&)> handler);
329 MCAPI
void registerTouchPadTouchHandler(
330 ::std::function<
void(::TouchPadTouchEventData
const&, ::FocusImpact, ::IClientInstance&)> handler
333 MCAPI
void releaseButtonsAndSticks(::std::string
const& currentMappingName,
int controllerId);
335 MCAPI
void render(::InputRenderContext& renderContext)
const;
338 ::IMinecraftGame* mcGame,
339 ::IClientInstance& primaryClientInstance,
340 ::Bedrock::NotNullNonOwnerPtr<::ControllerIDtoClientMap>
const& controllerClientMap,
341 bool allowMultipleClients
344 MCAPI
void updateInputMapping(::std::string
const& mappingName,
int controllerId);
346 MCAPI ~InputHandler();
353 ::BindingFactoryMap& bindingFactoryMap,
354 ::InputMappingFactoryMap& mappingFactoryMap,
355 ::InputMode startingInputMode,
356 ::Bedrock::NotNullNonOwnerPtr<::Input::Debug::ISplitscreenRedirect>
const& debugSplitscreenInputRedirect
Definition BindingFactoryMap.h:5
Definition IClientInstance.h:5
Definition IMinecraftGame.h:5
Definition InputRenderContext.h:5
Definition ClearPointerLocationWithIdEventData.h:5
Definition ControlOptionEventData.h:5
Definition ControllerIDtoClientMap.h:5
Definition NumberOfEnabledControlOptionsEventData.h:5
Definition OverlappingControlsEventData.h:5
Definition PointerLocationEventData.h:5
Definition PointerLocationWithIdEventData.h:5
Definition TouchPadTouchEventData.h:5