diff --git a/examples/unrealstatus/Plugins/DiscordRpc/DiscordRpc.uplugin b/examples/unrealstatus/Plugins/DiscordRpc/DiscordRpc.uplugin index 59e49d9..245bc34 100644 --- a/examples/unrealstatus/Plugins/DiscordRpc/DiscordRpc.uplugin +++ b/examples/unrealstatus/Plugins/DiscordRpc/DiscordRpc.uplugin @@ -17,7 +17,13 @@ { "Name": "DiscordRpc", "Type": "Runtime", - "LoadingPhase": "PreDefault" + "LoadingPhase": "PreDefault", + "WhitelistPlatforms" : + [ + "Win64", + "Linux", + "Mac" + ] } ] } \ No newline at end of file diff --git a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/DiscordRpc.Build.cs b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/DiscordRpc.Build.cs index 4249e5f..508f6cd 100644 --- a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/DiscordRpc.Build.cs +++ b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/DiscordRpc.Build.cs @@ -1,10 +1,15 @@ // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. using UnrealBuildTool; +using System.IO; -public class discordrpc : ModuleRules +public class DiscordRpc : ModuleRules { - public discordrpc(ReadOnlyTargetRules Target) : base(Target) +#if WITH_FORWARDED_MODULE_RULES_CTOR + public DiscordRpc(ReadOnlyTargetRules Target) : base(Target) +#else + public DiscordRpc(TargetInfo Target) +#endif { Definitions.Add("DISCORD_DYNAMIC_LIB=1"); @@ -24,6 +29,7 @@ public class discordrpc : ModuleRules new string[] { "Core", + "DiscordRpcLibrary" } ); @@ -45,7 +51,7 @@ public class discordrpc : ModuleRules } ); - string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "ThirdParty", "DiscordRpcLibrary")); + string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "Source", "ThirdParty", "DiscordRpcLibrary")); PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include")); } } \ No newline at end of file diff --git a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpc.cpp b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpc.cpp index d8ff536..14ece0d 100644 --- a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpc.cpp +++ b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpc.cpp @@ -12,7 +12,7 @@ void FDiscordRpcModule::StartupModule() #if defined(DISCORD_DYNAMIC_LIB) // Get the base directory of this plugin FString BaseDir = IPluginManager::Get().FindPlugin("DiscordRpc")->GetBaseDir(); - const FString SDKDir = FPaths::Combine(*BaseDir, TEXT("ThirdParty"), TEXT("DiscordRpcLibrary")); + const FString SDKDir = FPaths::Combine(*BaseDir, TEXT("Source"), TEXT("ThirdParty"), TEXT("DiscordRpcLibrary")); #if PLATFORM_WINDOWS const FString LibName = TEXT("discord-rpc"); const FString LibDir = FPaths::Combine(*SDKDir, TEXT("Win64")); @@ -42,7 +42,7 @@ void FDiscordRpcModule::ShutdownModule() #endif } -bool FDiscordAPIModule::LoadDependency(const FString& Dir, const FString& Name, void*& Handle) +bool FDiscordRpcModule::LoadDependency(const FString& Dir, const FString& Name, void*& Handle) { FString Lib = Name + TEXT(".") + FPlatformProcess::GetModuleExtension(); FString Path = Dir.IsEmpty() ? *Lib : FPaths::Combine(*Dir, *Lib); @@ -57,7 +57,7 @@ bool FDiscordAPIModule::LoadDependency(const FString& Dir, const FString& Name, return true; } -void FDiscordAPIModule::FreeDependency(void*& Handle) +void FDiscordRpcModule::FreeDependency(void*& Handle) { if (Handle != nullptr) { diff --git a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp index 5ad637b..eb8a43c 100644 --- a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp +++ b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp @@ -1,4 +1,4 @@ -#include "DicordRpcPrivatePCH" +#include "DiscordRpcPrivatePCH.h" #include "DiscordRpcBlueprint.h" #include "discord-rpc.h" diff --git a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Public/DiscordRpc.h b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Public/DiscordRpc.h index f5b27ea..2214add 100644 --- a/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Public/DiscordRpc.h +++ b/examples/unrealstatus/Plugins/DiscordRpc/Source/DiscordRpc/Public/DiscordRpc.h @@ -12,7 +12,7 @@ public: private: /** Handle to the test dll we will load */ - void* DiscordLibraryHandle; + void* DiscordRpcLibraryHandle; /** StartupModule is covered with defines, these functions are the place to put breakpoints */ static bool LoadDependency(const FString& Dir, const FString& Name, void*& Handle); diff --git a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs b/examples/unrealstatus/Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs similarity index 62% rename from examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs rename to examples/unrealstatus/Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs index ff7c1a3..ba8d834 100644 --- a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs +++ b/examples/unrealstatus/Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs @@ -3,14 +3,18 @@ using System.IO; using UnrealBuildTool; -public class discordrpcLibrary : ModuleRules +public class DiscordRpcLibrary : ModuleRules { - public discordrpcLibrary(ReadOnlyTargetRules Target) : base(Target) +#if WITH_FORWARDED_MODULE_RULES_CTOR + public DiscordRpcLibrary(ReadOnlyTargetRules Target) : base(Target) +#else + public DiscordRpcLibrary(TargetInfo Target) +#endif { Type = ModuleType.External; Definitions.Add("DISCORD_DYNAMIC_LIB=1"); - string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "ThirdParty", "discordrpc")); + string BaseDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..", "ThirdParty", "DiscordRpcLibrary")); if (Target.Platform == UnrealTargetPlatform.Win64) { @@ -39,5 +43,17 @@ public class discordrpcLibrary : ModuleRules PublicAdditionalLibraries.Add(Path.Combine(lib, "libdiscord-rpc.so")); RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "libdiscord-rpc.so"))); } + else if (Target.Platform == UnrealTargetPlatform.Mac) + { + string lib = Path.Combine(BaseDirectory, "Mac"); + + // Include headers + PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include")); + + // Add the import library + PublicLibraryPaths.Add(lib); + PublicAdditionalLibraries.Add(Path.Combine(lib, "libdiscord-rpc.dylib")); + RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "libdiscord-rpc.dylib"))); + } } } \ No newline at end of file diff --git a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Include/discord-rpc.h b/examples/unrealstatus/Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/Include/discord-rpc.h similarity index 96% rename from examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Include/discord-rpc.h rename to examples/unrealstatus/Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/Include/discord-rpc.h index 05c9344..feb874b 100644 --- a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Include/discord-rpc.h +++ b/examples/unrealstatus/Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/Include/discord-rpc.h @@ -1,84 +1,85 @@ -#pragma once -#include - -// clang-format off - -#if defined(DISCORD_DYNAMIC_LIB) -# if defined(_WIN32) -# if defined(DISCORD_BUILDING_SDK) -# define DISCORD_EXPORT __declspec(dllexport) -# else -# define DISCORD_EXPORT __declspec(dllimport) -# endif -# else -# define DISCORD_EXPORT __attribute__((visibility("default"))) -# endif -#else -# define DISCORD_EXPORT -#endif - -// clang-format on - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DiscordRichPresence { - const char* state; /* max 128 bytes */ - const char* details; /* max 128 bytes */ - int64_t startTimestamp; - int64_t endTimestamp; - const char* largeImageKey; /* max 32 bytes */ - const char* largeImageText; /* max 128 bytes */ - const char* smallImageKey; /* max 32 bytes */ - const char* smallImageText; /* max 128 bytes */ - const char* partyId; /* max 128 bytes */ - int partySize; - int partyMax; - const char* matchSecret; /* max 128 bytes */ - const char* joinSecret; /* max 128 bytes */ - const char* spectateSecret; /* max 128 bytes */ - int8_t instance; -} DiscordRichPresence; - -typedef struct DiscordJoinRequest { - const char* userId; - const char* username; - const char* discriminator; - const char* avatar; -} DiscordJoinRequest; - -typedef struct DiscordEventHandlers { - void (*ready)(); - void (*disconnected)(int errorCode, const char* message); - void (*errored)(int errorCode, const char* message); - void (*joinGame)(const char* joinSecret); - void (*spectateGame)(const char* spectateSecret); - void (*joinRequest)(const DiscordJoinRequest* request); -} DiscordEventHandlers; - -#define DISCORD_REPLY_NO 0 -#define DISCORD_REPLY_YES 1 -#define DISCORD_REPLY_IGNORE 2 - -DISCORD_EXPORT void Discord_Initialize(const char* applicationId, - DiscordEventHandlers* handlers, - int autoRegister, - const char* optionalSteamId); -DISCORD_EXPORT void Discord_Shutdown(void); - -/* checks for incoming messages, dispatches callbacks */ -DISCORD_EXPORT void Discord_RunCallbacks(void); - -/* If you disable the lib starting its own io thread, you'll need to call this from your own */ -#ifdef DISCORD_DISABLE_IO_THREAD -DISCORD_EXPORT void Discord_UpdateConnection(void); -#endif - -DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* presence); - -DISCORD_EXPORT void Discord_Respond(const char* userid, /* DISCORD_REPLY_ */ int reply); - -#ifdef __cplusplus -} /* extern "C" */ -#endif +#pragma once +#include + +// clang-format off + +#if defined(DISCORD_DYNAMIC_LIB) +# if defined(_WIN32) +# if defined(DISCORD_BUILDING_SDK) +# define DISCORD_EXPORT __declspec(dllexport) +# else +# define DISCORD_EXPORT __declspec(dllimport) +# endif +# else +# define DISCORD_EXPORT __attribute__((visibility("default"))) +# endif +#else +# define DISCORD_EXPORT +#endif + +// clang-format on + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct DiscordRichPresence { + const char* state; /* max 128 bytes */ + const char* details; /* max 128 bytes */ + int64_t startTimestamp; + int64_t endTimestamp; + const char* largeImageKey; /* max 32 bytes */ + const char* largeImageText; /* max 128 bytes */ + const char* smallImageKey; /* max 32 bytes */ + const char* smallImageText; /* max 128 bytes */ + const char* partyId; /* max 128 bytes */ + int partySize; + int partyMax; + const char* matchSecret; /* max 128 bytes */ + const char* joinSecret; /* max 128 bytes */ + const char* spectateSecret; /* max 128 bytes */ + int8_t instance; +} DiscordRichPresence; + +typedef struct DiscordJoinRequest { + const char* userId; + const char* username; + const char* discriminator; + const char* avatar; +} DiscordJoinRequest; + +typedef struct DiscordEventHandlers { + void (*ready)(void); + void (*disconnected)(int errorCode, const char* message); + void (*errored)(int errorCode, const char* message); + void (*joinGame)(const char* joinSecret); + void (*spectateGame)(const char* spectateSecret); + void (*joinRequest)(const DiscordJoinRequest* request); +} DiscordEventHandlers; + +#define DISCORD_REPLY_NO 0 +#define DISCORD_REPLY_YES 1 +#define DISCORD_REPLY_IGNORE 2 + +DISCORD_EXPORT void Discord_Initialize(const char* applicationId, + DiscordEventHandlers* handlers, + int autoRegister, + const char* optionalSteamId); +DISCORD_EXPORT void Discord_Shutdown(void); + +/* checks for incoming messages, dispatches callbacks */ +DISCORD_EXPORT void Discord_RunCallbacks(void); + +/* If you disable the lib starting its own io thread, you'll need to call this from your own */ +#ifdef DISCORD_DISABLE_IO_THREAD +DISCORD_EXPORT void Discord_UpdateConnection(void); +#endif + +DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* presence); +DISCORD_EXPORT void Discord_ClearPresence(void); + +DISCORD_EXPORT void Discord_Respond(const char* userid, /* DISCORD_REPLY_ */ int reply); + +#ifdef __cplusplus +} /* extern "C" */ +#endif diff --git a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Linux/x86_64-unknown-linux-gnu/libdiscord-rpc.so b/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Linux/x86_64-unknown-linux-gnu/libdiscord-rpc.so deleted file mode 100644 index 87055c6..0000000 Binary files a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Linux/x86_64-unknown-linux-gnu/libdiscord-rpc.so and /dev/null differ diff --git a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Win64/discord-rpc.dll b/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Win64/discord-rpc.dll deleted file mode 100644 index 009dc06..0000000 Binary files a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Win64/discord-rpc.dll and /dev/null differ diff --git a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Win64/discord-rpc.lib b/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Win64/discord-rpc.lib deleted file mode 100644 index 4692582..0000000 Binary files a/examples/unrealstatus/Plugins/DiscordRpc/ThirdParty/DiscordRpcLibrary/Win64/discord-rpc.lib and /dev/null differ