diff --git a/Config/FilterPlugin.ini b/Config/FilterPlugin.ini new file mode 100644 index 0000000..ccebca2 --- /dev/null +++ b/Config/FilterPlugin.ini @@ -0,0 +1,8 @@ +[FilterPlugin] +; This section lists additional files which will be packaged along with your plugin. Paths should be listed relative to the root plugin directory, and +; may include "...", "*", and "?" wildcards to match directories, files, and individual characters respectively. +; +; Examples: +; /README.txt +; /Extras/... +; /Binaries/ThirdParty/*.dll diff --git a/HarmonyLink.uplugin b/HarmonyLink.uplugin index c69226e..c0a42aa 100644 --- a/HarmonyLink.uplugin +++ b/HarmonyLink.uplugin @@ -3,22 +3,23 @@ "Version": 1, "VersionName": "1.0", "FriendlyName": "HarmonyLink", - "Description": "", - "Category": "Other", + "Description": "Revolutionize handheld gaming with adaptive game settings. Optimize graphics and gameplay experience based on real-time system metrics. Open-source project empowering developers to enhance games on portable devices", + "Category": "Handheld", "CreatedBy": "Jordon Brooks", "CreatedByURL": "https://jordongamedev.co.uk", - "DocsURL": "", - "MarketplaceURL": "", + "DocsURL": "https://github.com/Jordonbc/HarmonyLink", + "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/92fd511971274d1f955abb7197485041", "SupportURL": "", "CanContainContent": true, - "IsBetaVersion": true, - "IsExperimentalVersion": true, + "IsBetaVersion": false, + "IsExperimentalVersion": false, "Installed": false, "Modules": [ { "Name": "HarmonyLink", "Type": "Runtime", - "LoadingPhase": "Default" + "LoadingPhase": "Default", + "WhitelistPlatforms": ["Win64", "Linux"] } ] } diff --git a/Source/HarmonyLink/HarmonyLink.Build.cs b/Source/HarmonyLink/HarmonyLink.Build.cs index ede23b2..4880eca 100644 --- a/Source/HarmonyLink/HarmonyLink.Build.cs +++ b/Source/HarmonyLink/HarmonyLink.Build.cs @@ -30,7 +30,6 @@ public class HarmonyLink : ModuleRules "Core", "CoreUObject", "Engine", - "Projects" // ... add other public dependencies that you statically link with here ... } ); @@ -51,9 +50,23 @@ public class HarmonyLink : ModuleRules } ); - PublicAdditionalLibraries.Add(Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Win64/HarmonyLinkLib.lib")); - - - RuntimeDependencies.Add("$(BinaryOutputDir)/HarmonyLinkLib.dll", Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Win64/HarmonyLinkLib.dll")); + // Platform-specific settings + if (Target.Platform == UnrealTargetPlatform.Win64) + { + PublicAdditionalLibraries.Add(Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Win64/HarmonyLinkLib.lib")); + RuntimeDependencies.Add("$(BinaryOutputDir)/HarmonyLinkLib.dll", Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Win64/HarmonyLinkLib.dll")); + } + else if (Target.Platform == UnrealTargetPlatform.Linux) + { + PublicAdditionalLibraries.Add(Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Linux/libHarmonyLinkLib.so")); + RuntimeDependencies.Add("$(BinaryOutputDir)/libHarmonyLinkLib.so", Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Linux/libHarmonyLinkLib.so")); + } + + // I shall include this if anyone wishes to provide Mac binaries of HarmonyLink but these are not included by default as I don't own one. + else if (Target.Platform == UnrealTargetPlatform.Mac) + { + PublicAdditionalLibraries.Add(Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Mac/HarmonyLinkLib.dylib")); + RuntimeDependencies.Add("$(BinaryOutputDir)/HarmonyLinkLib.dylib", Path.Combine(PluginDirectory, "Source/ThirdParty/HarmonyLinkLib/bin/Mac/HarmonyLinkLib.dylib")); + } } } diff --git a/Source/HarmonyLink/Private/HarmonyLinkLibrary.cpp b/Source/HarmonyLink/Private/HarmonyLinkLibrary.cpp index e2de5d4..ed3f0d9 100644 --- a/Source/HarmonyLink/Private/HarmonyLinkLibrary.cpp +++ b/Source/HarmonyLink/Private/HarmonyLinkLibrary.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2023 Jordon Brooks - +// Copyright (C) 2024 Jordon Brooks #include "HarmonyLinkLibrary.h" diff --git a/Source/HarmonyLink/Private/Structs/Battery.cpp b/Source/HarmonyLink/Private/Structs/Battery.cpp index 3978e75..0b23e6d 100644 --- a/Source/HarmonyLink/Private/Structs/Battery.cpp +++ b/Source/HarmonyLink/Private/Structs/Battery.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Jordon Brooks +// Copyright (C) 2024 Jordon Brooks #include "Structs/Battery.h" diff --git a/Source/HarmonyLink/Private/Structs/CPUInfo.cpp b/Source/HarmonyLink/Private/Structs/CPUInfo.cpp index f075203..c13d94d 100644 --- a/Source/HarmonyLink/Private/Structs/CPUInfo.cpp +++ b/Source/HarmonyLink/Private/Structs/CPUInfo.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Jordon Brooks +// Copyright (C) 2024 Jordon Brooks #include "Structs/CPUInfo.h" diff --git a/Source/HarmonyLink/Private/Structs/Device.cpp b/Source/HarmonyLink/Private/Structs/Device.cpp index 1e2845a..a52de5f 100644 --- a/Source/HarmonyLink/Private/Structs/Device.cpp +++ b/Source/HarmonyLink/Private/Structs/Device.cpp @@ -1,4 +1,6 @@ -#include "Structs/Device.h" +// Copyright (C) 2024 Jordon Brooks + +#include "Structs/Device.h" #include diff --git a/Source/HarmonyLink/Private/Structs/OSVerInfo.cpp b/Source/HarmonyLink/Private/Structs/OSVerInfo.cpp index 1d502bb..36f3671 100644 --- a/Source/HarmonyLink/Private/Structs/OSVerInfo.cpp +++ b/Source/HarmonyLink/Private/Structs/OSVerInfo.cpp @@ -1,4 +1,6 @@ -#include "Structs/OSVerInfo.h" +// Copyright (C) 2024 Jordon Brooks + +#include "Structs/OSVerInfo.h" FOSVerInfo::FOSVerInfo(HarmonyLinkLib::FOSVerInfo* oldInfo) { diff --git a/Source/HarmonyLink/Public/Enums/DeviceEnum.h b/Source/HarmonyLink/Public/Enums/DeviceEnum.h index fe3aa8e..64320c8 100644 --- a/Source/HarmonyLink/Public/Enums/DeviceEnum.h +++ b/Source/HarmonyLink/Public/Enums/DeviceEnum.h @@ -1,10 +1,12 @@ -#pragma once +// Copyright (C) 2024 Jordon Brooks + +#pragma once #include "CoreMinimal.h" #include "DeviceEnum.generated.h" -/** - * +/* + * Enum representing different operating system platforms. */ UENUM(BlueprintType) enum class EDeviceEnum : uint8 diff --git a/Source/HarmonyLink/Public/Enums/Platform.h b/Source/HarmonyLink/Public/Enums/Platform.h index 492c31b..2ffb255 100644 --- a/Source/HarmonyLink/Public/Enums/Platform.h +++ b/Source/HarmonyLink/Public/Enums/Platform.h @@ -1,10 +1,12 @@ -#pragma once +// Copyright (C) 2024 Jordon Brooks + +#pragma once #include "CoreMinimal.h" #include "Platform.generated.h" -/** - * +/* + * Enum representing different operating system platforms. */ UENUM(BlueprintType) enum class EPlatform : uint8 diff --git a/Source/HarmonyLink/Public/HarmonyLinkLibrary.h b/Source/HarmonyLink/Public/HarmonyLinkLibrary.h index 9a3df81..373e583 100644 --- a/Source/HarmonyLink/Public/HarmonyLinkLibrary.h +++ b/Source/HarmonyLink/Public/HarmonyLinkLibrary.h @@ -1,41 +1,50 @@ -// Copyright (C) 2023 Jordon Brooks +// Copyright (C) 2024 Jordon Brooks #pragma once #include "CoreMinimal.h" -#include "Kismet/BlueprintFunctionLibrary.h" + #include "Structs/Battery.h" #include "Structs/CPUInfo.h" #include "Structs/Device.h" #include "Structs/OSVerInfo.h" + +#include "Kismet/BlueprintFunctionLibrary.h" #include "HarmonyLinkLibrary.generated.h" /** - * + * Library of static functions for accessing various system information, particularly for the HarmonyLink project. */ UCLASS() class HARMONYLINK_API UHarmonyLinkLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() + // Checks if the game is running under Wine. UFUNCTION(BlueprintCallable, Category="HarmonyLink") static bool IsWine(); - + + // Checks if the operating system is Linux. UFUNCTION(BlueprintCallable, Category="HarmonyLink") static bool IsLinux(); + // Checks if the game is running on a Steam Deck. UFUNCTION(BlueprintCallable, Category="HarmonyLink") static bool IsSteamDeck(); + // Retrieves information about the CPU of the current device. UFUNCTION(BlueprintCallable, Category="HarmonyLink") static FCPUInfo GetCPUInfo(); + // Retrieves information about the current device. UFUNCTION(BlueprintCallable, Category="HarmonyLink") static FDevice GetDeviceInfo(); + // Retrieves information about the operating system of the current device. UFUNCTION(BlueprintCallable, Category="HarmonyLink") static FOSVerInfo GetOSInfo(); + // Retrieves the current battery status of the device. UFUNCTION(BlueprintCallable, Category="HarmonyLink") static FBattery GetBatteryStatus(); }; diff --git a/Source/HarmonyLink/Public/Structs/Battery.h b/Source/HarmonyLink/Public/Structs/Battery.h index fd4c278..6b8ec43 100644 --- a/Source/HarmonyLink/Public/Structs/Battery.h +++ b/Source/HarmonyLink/Public/Structs/Battery.h @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Jordon Brooks +// Copyright (C) 2024 Jordon Brooks #pragma once #include @@ -6,8 +6,8 @@ #include "CoreMinimal.h" #include "Battery.generated.h" -/** - * +/* + * Represents the battery status and information of a device. */ USTRUCT(BlueprintType) struct FBattery @@ -16,14 +16,19 @@ struct FBattery FBattery() {} - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // Indicates whether the device has a battery. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") bool HasBattery = false; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // Indicates whether the device is connected to AC power. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") bool IsACConnected = false; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The current battery percentage of the device. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") int32 BatteryPercent = 0; + // Constructor that initializes the struct with information from an external battery source. + // @param battery Pointer to an external FBattery structure to copy data from. FBattery(HarmonyLinkLib::FBattery* battery); }; diff --git a/Source/HarmonyLink/Public/Structs/CPUInfo.h b/Source/HarmonyLink/Public/Structs/CPUInfo.h index 97d0f95..e6cbd9d 100644 --- a/Source/HarmonyLink/Public/Structs/CPUInfo.h +++ b/Source/HarmonyLink/Public/Structs/CPUInfo.h @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Jordon Brooks +// Copyright (C) 2024 Jordon Brooks #pragma once @@ -7,8 +7,8 @@ #include "CoreMinimal.h" #include "CPUInfo.generated.h" -/** - * +/* + * Represents information about the CPU of a device. */ USTRUCT(BlueprintType) struct FCPUInfo @@ -17,20 +17,27 @@ struct FCPUInfo FCPUInfo() {} - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The vendor identifier for the CPU. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString VendorID; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The model name of the CPU. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString ModelName; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The number of physical cores in the CPU. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") int32 PhysicalCores = 0; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The number of logical cores in the CPU (may be different from physical cores). + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") int32 LogicalCores = 0; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // A set of flags representing various features or capabilities of the CPU. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") TSet Flags; + // Constructor that initializes the struct with information from an external CPU info source. + // @param cpu_info Pointer to an external FCPUInfo structure to copy data from. FCPUInfo(HarmonyLinkLib::FCPUInfo* cpu_info); }; diff --git a/Source/HarmonyLink/Public/Structs/Device.h b/Source/HarmonyLink/Public/Structs/Device.h index 00c7ad2..071d13c 100644 --- a/Source/HarmonyLink/Public/Structs/Device.h +++ b/Source/HarmonyLink/Public/Structs/Device.h @@ -1,4 +1,6 @@ -#pragma once +// Copyright (C) 2024 Jordon Brooks + +#pragma once #include "CoreMinimal.h" #include "Enums/DeviceEnum.h" @@ -7,9 +9,7 @@ #include "Device.generated.h" -/** - * - */ +// Represents information about a specific device. USTRUCT(BlueprintType) struct FDevice { @@ -17,14 +17,28 @@ struct FDevice FDevice() {} - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The platform on which the device operates. Note: This can differ from the build platform. + // For example, if the device is identified as running on Wine, this will show Linux, + // regardless of the build being an executable for Windows. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") EPlatform Platform = EPlatform::WINDOWS; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The type of the device. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") EDeviceEnum Device = EDeviceEnum::DESKTOP; + // Constructor that initializes the struct with information from an external source. + // @param oldDevice Pointer to an external FDevice structure to copy data from. FDevice(HarmonyLinkLib::FDevice* oldDevice); +private: + // Converts an external device enum to the internal EDeviceEnum type. + // @param Device External device enum to convert. + // @returns Converted EDeviceEnum value. static EDeviceEnum Convert(HarmonyLinkLib::EDevice Device); + + // Converts an external platform enum to the internal EPlatform type. + // @param Platform External platform enum to convert. + // @returns Converted EPlatform value. static EPlatform Convert(HarmonyLinkLib::EPlatform Platform); }; diff --git a/Source/HarmonyLink/Public/Structs/OSVerInfo.h b/Source/HarmonyLink/Public/Structs/OSVerInfo.h index 9d4474f..ea380c8 100644 --- a/Source/HarmonyLink/Public/Structs/OSVerInfo.h +++ b/Source/HarmonyLink/Public/Structs/OSVerInfo.h @@ -1,15 +1,12 @@ -// Copyright (C) 2023 Jordon Brooks +// Copyright (C) 2024 Jordon Brooks #pragma once -#include - #include "CoreMinimal.h" +#include #include "OSVerInfo.generated.h" -/** - * - */ +// Represents information about an operating system version. USTRUCT(BlueprintType) struct FOSVerInfo { @@ -17,26 +14,35 @@ struct FOSVerInfo FOSVerInfo() {} - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // The name of the operating system. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString Name; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // Numerical version of the operating system. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") int32 Version = 0; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // Unique identifier for the operating system. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString ID; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // Identifier for the specific version of the operating system. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString VersionID; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // Codename for the operating system version. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString VersionCodename; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // User-friendly name for the operating system version. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString PrettyName; - UPROPERTY(BlueprintReadWrite, EditAnywhere) + // Variant identifier of the operating system. + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="HarmonyLink") FString VariantID; + // Constructor that initializes the struct with information from an external source. + // @param oldInfo Pointer to an external FOSVerInfo structure to copy data from. FOSVerInfo(HarmonyLinkLib::FOSVerInfo* oldInfo); }; diff --git a/Source/ThirdParty/HarmonyLinkLib/bin/Linux/libHarmonyLinkLib.so b/Source/ThirdParty/HarmonyLinkLib/bin/Linux/libHarmonyLinkLib.so index 0daf6e2..67e0680 100644 Binary files a/Source/ThirdParty/HarmonyLinkLib/bin/Linux/libHarmonyLinkLib.so and b/Source/ThirdParty/HarmonyLinkLib/bin/Linux/libHarmonyLinkLib.so differ