6#include "CoreMinimal.h"
7#include "Modules/ModuleManager.h"
8#include "IInputDeviceModule.h"
9#include "IInputDevice.h"
10#include "GenericPlatform/GenericApplicationMessageHandler.h"
12constexpr auto MaxEnhancedRawInputAxis = 8;
13constexpr auto MaxEnhancedRawInputButtons = 128;
14constexpr auto MaxEnhancedRawInputPovs = 4;
17DECLARE_DELEGATE_RetVal_TwoParams(
bool, FEnhancedRawInputDataDelegate, int32 ,
const struct tagRAWINPUT* );
20class IEnhancedRawInput :
public IInputDevice
23 explicit IEnhancedRawInput(
const TSharedRef<FGenericApplicationMessageHandler> &InMessageHandler);
24 virtual ~IEnhancedRawInput()
override {};
33 virtual void SetAxisBinding(
const FString InterfaceName,
const int32 AxisUsage,
const FName KeyName) {}
39 virtual void SetButtonBinding(
const FString InterfaceName,
const int32 ButtonIndex,
const FName KeyName) {}
45 virtual void SetPovAxisBinding(
const FString InterfaceName,
const int32 PovIndex, FName KeyName) {}
51 virtual void SetPovButtonBinding(
const FString InterfaceName,
const int32 PovIndex, TArray<FName> KeyNames) {}
58 TSharedRef<FGenericApplicationMessageHandler> MessageHandler;
60 FEnhancedRawInputDataDelegate DataReceivedHandler;
66 virtual TSharedPtr<IInputDevice> CreateInputDevice(
const TSharedRef<FGenericApplicationMessageHandler> &InMessageHandler)
override;
67 TSharedPtr<class IEnhancedRawInput> EnhancedRawInput;
75 virtual void StartupModule()
override;
76 virtual void ShutdownModule()
override;
82 return FModuleManager::LoadModuleChecked<FEnhancedRawInputPlugin>(
"EnhancedRawInput");
89 return FModuleManager::Get().IsModuleLoaded(
"EnhancedRawInput");