From f662571bbe45cca21cb40ef110d37300bd466f58 Mon Sep 17 00:00:00 2001 From: spape Date: Mon, 31 May 2021 11:54:02 +0200 Subject: [PATCH 1/2] Adding "Linux Support" --- DTrackPlugin.uplugin | 4 ++-- Readme.md | 5 +---- Source/DTrackPlugin/Public/DTrackSDKHandler.h | 16 +++++++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/DTrackPlugin.uplugin b/DTrackPlugin.uplugin index 9c1ff21..c655f1c 100644 --- a/DTrackPlugin.uplugin +++ b/DTrackPlugin.uplugin @@ -17,12 +17,12 @@ { "Name": "DTrackPlugin", "Type": "Runtime", - "WhitelistPlatforms": [ "Win64" ] + "WhitelistPlatforms": [ "Win64" , "Linux" ] }, { "Name": "DTrackInput", "Type": "Runtime", - "WhitelistPlatforms": [ "Win64" ] + "WhitelistPlatforms": [ "Win64" , "Linux" ] } ], "Plugins": [ diff --git a/Readme.md b/Readme.md index 1292d0e..791ac9e 100644 --- a/Readme.md +++ b/Readme.md @@ -6,9 +6,6 @@ This is a plug-in for the Unreal Engine with the purpose of native integration o ## Prerequisites - Unreal Engine 4.23 or later -- Windows -- Microsoft Visual Studio 2015 or later (Express or Community Edition should suffice) - ## Installation @@ -17,7 +14,7 @@ This is a plug-in for the Unreal Engine with the purpose of native integration o - Adapt the _.uplugin_ file to the version of your _UnrealEditor_:
The `EngineVersion` key in the file _DTrackPlugin.uplugin_ comes with a default value corresponding to the latest tested _UE4Editor_ version (e.g. `"EngineVersion": "4.25.0"`).
If you are using an _UE4Editor_ version with a different minor version number (e.g. 4.23 instead of 4.25), you should adjust this value (e.g. to `"EngineVersion": "4.23.0"`). ### Install into the global Engine plugin folder -- Compile the plugin manually:
*<UE4Dir>\Engine\Build\BatchFiles\RunUAT.bat* BuildPlugin -Plugin=*/Path/to/DTrackPlugin.uplugin* -TargetPlatforms=Win64 -Package=*<OutDir>* -Rocket +- Compile the plugin manually:
*<UE4Dir>\Engine\Build\BatchFiles\RunUAT.bat* BuildPlugin -Plugin=*/Path/to/DTrackPlugin.uplugin* -TargetPlatforms=*<Win64/Linux>* -Package=*<OutDir>* -Rocket - Copy *<OutDir>* to *<UE4Dir>\Engine\Plugins\DTrackPlugin* diff --git a/Source/DTrackPlugin/Public/DTrackSDKHandler.h b/Source/DTrackPlugin/Public/DTrackSDKHandler.h index dec4fa2..3a2e206 100644 --- a/Source/DTrackPlugin/Public/DTrackSDKHandler.h +++ b/Source/DTrackPlugin/Public/DTrackSDKHandler.h @@ -28,12 +28,18 @@ #include "ILiveLinkSource.h" -// Avoid 'warning C4005' when including DTrackSDK -#include "Windows/AllowWindowsPlatformTypes.h" -#include "Windows/PreWindowsApi.h" +#if PLATFORM_WINDOWS + // Avoid 'warning C4005' when including DTrackSDK + #include "Windows/AllowWindowsPlatformTypes.h" + #include "Windows/PreWindowsApi.h" +#endif + #include "DTrackSDK.hpp" -#include "Windows/PostWindowsApi.h" -#include "Windows/HideWindowsPlatformTypes.h" + +#if PLATFORM_WINDOWS + #include "Windows/PostWindowsApi.h" + #include "Windows/HideWindowsPlatformTypes.h" +#endif #include "HAL/Runnable.h" #include "HAL/ThreadSafeBool.h" From 94e35c3db6a57ec8dc70562b125462c5ef4fde6d Mon Sep 17 00:00:00 2001 From: "RZ-WIN\\rolv" Date: Mon, 31 May 2021 14:26:54 +0200 Subject: [PATCH 2/2] Adding special Flystick buttons instead of Gamepad button mappings --- .../Private/DTrackFlystickInputDevice.cpp | 24 ++++++++-------- .../DTrackInput/Private/DTrackInputModule.cpp | 28 ++++++++++++++++++- .../DTrackInput/Private/DTrackInputModule.h | 19 ++++++++++++- 3 files changed, 57 insertions(+), 14 deletions(-) diff --git a/Source/DTrackInput/Private/DTrackFlystickInputDevice.cpp b/Source/DTrackInput/Private/DTrackFlystickInputDevice.cpp index 2cbdc9d..a4fa800 100644 --- a/Source/DTrackInput/Private/DTrackFlystickInputDevice.cpp +++ b/Source/DTrackInput/Private/DTrackFlystickInputDevice.cpp @@ -52,18 +52,18 @@ FDTrackFlystickInputDevice::FDTrackFlystickInputDevice(const TSharedRef< FGeneri ModularFeatures.OnModularFeatureRegistered().AddRaw(this, &FDTrackFlystickInputDevice::on_modular_feature_registerd); } - m_button_mapping.Add( EKeys::Gamepad_LeftTrigger.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_FaceButton_Bottom.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_FaceButton_Right.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_FaceButton_Left.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_FaceButton_Top.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_DPad_Up.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_DPad_Down.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_DPad_Right.GetFName() ); - m_button_mapping.Add( EKeys::Gamepad_DPad_Left.GetFName() ); - - m_joystick_mapping.Add( EKeys::Gamepad_LeftX.GetFName() ); - m_joystick_mapping.Add( EKeys::Gamepad_LeftY.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickTrigger.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton1.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton2.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton3.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton4.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton5.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton6.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton7.GetFName() ); + m_button_mapping.Add( FDTrackInputModule::FlystickButton8.GetFName() ); + + m_joystick_mapping.Add( FDTrackInputModule::FlystickThumbstickX.GetFName() ); + m_joystick_mapping.Add( FDTrackInputModule::FlystickThumbstickY.GetFName() ); } FDTrackFlystickInputDevice::~FDTrackFlystickInputDevice() { diff --git a/Source/DTrackInput/Private/DTrackInputModule.cpp b/Source/DTrackInput/Private/DTrackInputModule.cpp index df501e4..30e5f40 100644 --- a/Source/DTrackInput/Private/DTrackInputModule.cpp +++ b/Source/DTrackInput/Private/DTrackInputModule.cpp @@ -32,9 +32,35 @@ DEFINE_LOG_CATEGORY(LogDTrackInput); - +/* Keys */ +const FKey FDTrackInputModule::FlystickTrigger = FKey("Flystick_Trigger"); +const FKey FDTrackInputModule::FlystickButton1 = FKey("Flystick_Button_1"); +const FKey FDTrackInputModule::FlystickButton2 = FKey("Flystick_Button_2"); +const FKey FDTrackInputModule::FlystickButton3 = FKey("Flystick_Button_3"); +const FKey FDTrackInputModule::FlystickButton4 = FKey("Flystick_Button_4"); +const FKey FDTrackInputModule::FlystickButton5 = FKey("Flystick_Button_5"); +const FKey FDTrackInputModule::FlystickButton6 = FKey("Flystick_Button_6"); +const FKey FDTrackInputModule::FlystickButton7 = FKey("Flystick_Button_7"); +const FKey FDTrackInputModule::FlystickButton8 = FKey("Flystick_Button_8"); +/* Axis */ +const FKey FDTrackInputModule::FlystickThumbstickX = FKey("Flystick_Thumbstick_X"); +const FKey FDTrackInputModule::FlystickThumbstickY = FKey("Flystick_Thumbstick_Y"); TSharedPtr< class IInputDevice > FDTrackInputModule::CreateInputDevice(const TSharedRef< FGenericApplicationMessageHandler >& InMessageHandler) { + EKeys::AddMenuCategoryDisplayInfo(FlystickKeyCategory, FText::AsCultureInvariant("A.R.T. Flystick"), TEXT("GraphEditor.PadEvent_16x")); + + EKeys::AddKey(FKeyDetails(FlystickTrigger, FText::AsCultureInvariant("Flystick Trigger"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton1, FText::AsCultureInvariant("Flystick Button 1"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton2, FText::AsCultureInvariant("Flystick Button 2"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton3, FText::AsCultureInvariant("Flystick Button 3"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton4, FText::AsCultureInvariant("Flystick Button 4"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton5, FText::AsCultureInvariant("Flystick Button 5"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton6, FText::AsCultureInvariant("Flystick Button 6"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton7, FText::AsCultureInvariant("Flystick Button 7"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickButton8, FText::AsCultureInvariant("Flystick Button 8"), FKeyDetails::GamepadKey, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickThumbstickX, FText::AsCultureInvariant("Flystick Thumbstick X"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, FlystickKeyCategory)); + EKeys::AddKey(FKeyDetails(FlystickThumbstickY, FText::AsCultureInvariant("Flystick Thumbstick Y"), FKeyDetails::GamepadKey | FKeyDetails::Axis1D, FlystickKeyCategory)); + return TSharedPtr< class IInputDevice >(new FDTrackFlystickInputDevice(InMessageHandler)); } diff --git a/Source/DTrackInput/Private/DTrackInputModule.h b/Source/DTrackInput/Private/DTrackInputModule.h index d0c78e5..ed2ad90 100644 --- a/Source/DTrackInput/Private/DTrackInputModule.h +++ b/Source/DTrackInput/Private/DTrackInputModule.h @@ -28,6 +28,7 @@ #include "IDTrackInputModule.h" +#include "InputCoreTypes.h" class FDTrackFlystickInputDevice; class ILiveLinkClient; @@ -42,7 +43,23 @@ DECLARE_LOG_CATEGORY_EXTERN(LogDTrackInput, Log, All); class FDTrackInputModule : public IDTrackInputModule { public: - + + /* Category */ + const FName FlystickKeyCategory = FName("ART_Flystick"); + /* Keys */ + static const FKey FlystickTrigger; + static const FKey FlystickButton1; + static const FKey FlystickButton2; + static const FKey FlystickButton3; + static const FKey FlystickButton4; + static const FKey FlystickButton5; + static const FKey FlystickButton6; + static const FKey FlystickButton7; + static const FKey FlystickButton8; + /* Axis */ + static const FKey FlystickThumbstickX; + static const FKey FlystickThumbstickY; + //~ Begin IInputDeviceModule implementation virtual TSharedPtr< class IInputDevice > CreateInputDevice(const TSharedRef< FGenericApplicationMessageHandler >& InMessageHandler) override; //~ End IInputDeviceModule implementation