aboutsummaryrefslogtreecommitdiff
path: root/externals/discord-rpc/examples
diff options
context:
space:
mode:
authorDawid Potocki <dawid@dawidpotocki.com>2024-03-05 14:09:27 +1300
committerDawid Potocki <dawid@dawidpotocki.com>2024-03-05 20:34:15 +1300
commit063e15900bda8453fb0fc6751e78d064501ccbae (patch)
treea4cd5f01dbca33a262333aff10e1e035217a30c8 /externals/discord-rpc/examples
parent537296095ab24eddcb196b5ef98004f91de9c8c2 (diff)
Replace broken submodules with vendored source codeHEADpatched
Diffstat (limited to 'externals/discord-rpc/examples')
-rw-r--r--externals/discord-rpc/examples/button-clicker/.gitignore8
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs125
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta12
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs231
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta12
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs101
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta13
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/main.unity1278
-rw-r--r--externals/discord-rpc/examples/button-clicker/Assets/main.unity.meta8
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset17
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset6
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset20
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset10
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset16
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset61
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset295
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset89
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset8
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset37
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset610
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt1
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset193
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset43
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset9
-rw-r--r--externals/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset34
-rw-r--r--externals/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json4
-rw-r--r--externals/discord-rpc/examples/send-presence/CMakeLists.txt21
-rw-r--r--externals/discord-rpc/examples/send-presence/send-presence.c206
-rw-r--r--externals/discord-rpc/examples/unrealstatus/.gitignore78
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Config/DefaultEditor.ini0
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini54
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini7
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Content/MainScreenBP.uassetbin0 -> 50332 bytes
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Content/MouseGameModeBP.uassetbin0 -> 17950 bytes
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Content/MousePlayerControllerBP.uassetbin0 -> 16981 bytes
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Content/ShowTheUILevel.umapbin0 -> 806708 bytes
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin29
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/Icon128.pngbin0 -> 9834 bytes
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/discord.pngbin0 -> 9834 bytes
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs57
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp76
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp172
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h2
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h20
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h181
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs59
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs14
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs23
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp6
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h5
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp3
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h15
-rw-r--r--externals/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs14
-rw-r--r--externals/discord-rpc/examples/unrealstatus/unrealstatus.uproject19
54 files changed, 4302 insertions, 0 deletions
diff --git a/externals/discord-rpc/examples/button-clicker/.gitignore b/externals/discord-rpc/examples/button-clicker/.gitignore
new file mode 100644
index 0000000000..2695047f5d
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/.gitignore
@@ -0,0 +1,8 @@
+/Library/
+/Temp/
+/obj/
+/Assets/Plugins/
+/Assets/Plugins.meta
+*.sln
+*.csproj
+*.userprefs
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs b/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs
new file mode 100644
index 0000000000..7319d5fa3f
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs
@@ -0,0 +1,125 @@
+using UnityEngine;
+
+[System.Serializable]
+public class DiscordJoinEvent : UnityEngine.Events.UnityEvent<string> { }
+
+[System.Serializable]
+public class DiscordSpectateEvent : UnityEngine.Events.UnityEvent<string> { }
+
+[System.Serializable]
+public class DiscordJoinRequestEvent : UnityEngine.Events.UnityEvent<DiscordRpc.DiscordUser> { }
+
+public class DiscordController : MonoBehaviour
+{
+ public DiscordRpc.RichPresence presence = new DiscordRpc.RichPresence();
+ public string applicationId;
+ public string optionalSteamId;
+ public int clickCounter;
+ public DiscordRpc.DiscordUser joinRequest;
+ public UnityEngine.Events.UnityEvent onConnect;
+ public UnityEngine.Events.UnityEvent onDisconnect;
+ public UnityEngine.Events.UnityEvent hasResponded;
+ public DiscordJoinEvent onJoin;
+ public DiscordJoinEvent onSpectate;
+ public DiscordJoinRequestEvent onJoinRequest;
+
+ DiscordRpc.EventHandlers handlers;
+
+ public void OnClick()
+ {
+ Debug.Log("Discord: on click!");
+ clickCounter++;
+
+ presence.details = string.Format("Button clicked {0} times", clickCounter);
+ presence.joinSecret = "aSecret";
+ presence.partyId = "aPartyId";
+ presence.partySize = 1;
+ presence.partyMax = 3;
+ presence.partyPrivacy = DiscordRpc.PartyPrivacy.Public;
+
+ DiscordRpc.UpdatePresence(presence);
+ }
+
+ public void RequestRespondYes()
+ {
+ Debug.Log("Discord: responding yes to Ask to Join request");
+ DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.Yes);
+ hasResponded.Invoke();
+ }
+
+ public void RequestRespondNo()
+ {
+ Debug.Log("Discord: responding no to Ask to Join request");
+ DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.No);
+ hasResponded.Invoke();
+ }
+
+ public void ReadyCallback(ref DiscordRpc.DiscordUser connectedUser)
+ {
+ Debug.Log(string.Format("Discord: connected to {0}#{1}: {2}", connectedUser.username, connectedUser.discriminator, connectedUser.userId));
+ onConnect.Invoke();
+ }
+
+ public void DisconnectedCallback(int errorCode, string message)
+ {
+ Debug.Log(string.Format("Discord: disconnect {0}: {1}", errorCode, message));
+ onDisconnect.Invoke();
+ }
+
+ public void ErrorCallback(int errorCode, string message)
+ {
+ Debug.Log(string.Format("Discord: error {0}: {1}", errorCode, message));
+ }
+
+ public void JoinCallback(string secret)
+ {
+ Debug.Log(string.Format("Discord: join ({0})", secret));
+ onJoin.Invoke(secret);
+ }
+
+ public void SpectateCallback(string secret)
+ {
+ Debug.Log(string.Format("Discord: spectate ({0})", secret));
+ onSpectate.Invoke(secret);
+ }
+
+ public void RequestCallback(ref DiscordRpc.DiscordUser request)
+ {
+ Debug.Log(string.Format("Discord: join request {0}#{1}: {2}", request.username, request.discriminator, request.userId));
+ joinRequest = request;
+ onJoinRequest.Invoke(request);
+ }
+
+ void Start()
+ {
+ }
+
+ void Update()
+ {
+ DiscordRpc.RunCallbacks();
+ }
+
+ void OnEnable()
+ {
+ Debug.Log("Discord: init");
+ handlers = new DiscordRpc.EventHandlers();
+ handlers.readyCallback += ReadyCallback;
+ handlers.disconnectedCallback += DisconnectedCallback;
+ handlers.errorCallback += ErrorCallback;
+ handlers.joinCallback += JoinCallback;
+ handlers.spectateCallback += SpectateCallback;
+ handlers.requestCallback += RequestCallback;
+ DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId);
+ }
+
+ void OnDisable()
+ {
+ Debug.Log("Discord: shutdown");
+ DiscordRpc.Shutdown();
+ }
+
+ void OnDestroy()
+ {
+
+ }
+}
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta b/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta
new file mode 100644
index 0000000000..ee24c7e484
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 27f0a5f59ffffa84c86547736e2e730a
+timeCreated: 1501697692
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs b/externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs
new file mode 100644
index 0000000000..f3b1ee5978
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs
@@ -0,0 +1,231 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Text;
+using AOT;
+
+public class DiscordRpc
+{
+ [MonoPInvokeCallback(typeof(OnReadyInfo))]
+ public static void ReadyCallback(ref DiscordUser connectedUser) { Callbacks.readyCallback(ref connectedUser); }
+ public delegate void OnReadyInfo(ref DiscordUser connectedUser);
+
+ [MonoPInvokeCallback(typeof(OnDisconnectedInfo))]
+ public static void DisconnectedCallback(int errorCode, string message) { Callbacks.disconnectedCallback(errorCode, message); }
+ public delegate void OnDisconnectedInfo(int errorCode, string message);
+
+ [MonoPInvokeCallback(typeof(OnErrorInfo))]
+ public static void ErrorCallback(int errorCode, string message) { Callbacks.errorCallback(errorCode, message); }
+ public delegate void OnErrorInfo(int errorCode, string message);
+
+ [MonoPInvokeCallback(typeof(OnJoinInfo))]
+ public static void JoinCallback(string secret) { Callbacks.joinCallback(secret); }
+ public delegate void OnJoinInfo(string secret);
+
+ [MonoPInvokeCallback(typeof(OnSpectateInfo))]
+ public static void SpectateCallback(string secret) { Callbacks.spectateCallback(secret); }
+ public delegate void OnSpectateInfo(string secret);
+
+ [MonoPInvokeCallback(typeof(OnRequestInfo))]
+ public static void RequestCallback(ref DiscordUser request) { Callbacks.requestCallback(ref request); }
+ public delegate void OnRequestInfo(ref DiscordUser request);
+
+ static EventHandlers Callbacks { get; set; }
+
+ public struct EventHandlers
+ {
+ public OnReadyInfo readyCallback;
+ public OnDisconnectedInfo disconnectedCallback;
+ public OnErrorInfo errorCallback;
+ public OnJoinInfo joinCallback;
+ public OnSpectateInfo spectateCallback;
+ public OnRequestInfo requestCallback;
+ }
+
+ [Serializable, StructLayout(LayoutKind.Sequential)]
+ public struct RichPresenceStruct
+ {
+ public IntPtr state; /* max 128 bytes */
+ public IntPtr details; /* max 128 bytes */
+ public long startTimestamp;
+ public long endTimestamp;
+ public IntPtr largeImageKey; /* max 32 bytes */
+ public IntPtr largeImageText; /* max 128 bytes */
+ public IntPtr smallImageKey; /* max 32 bytes */
+ public IntPtr smallImageText; /* max 128 bytes */
+ public IntPtr partyId; /* max 128 bytes */
+ public int partySize;
+ public int partyMax;
+ public int partyPrivacy;
+ public IntPtr matchSecret; /* max 128 bytes */
+ public IntPtr joinSecret; /* max 128 bytes */
+ public IntPtr spectateSecret; /* max 128 bytes */
+ public bool instance;
+ }
+
+ [Serializable]
+ public struct DiscordUser
+ {
+ public string userId;
+ public string username;
+ public string discriminator;
+ public string avatar;
+ }
+
+ public enum Reply
+ {
+ No = 0,
+ Yes = 1,
+ Ignore = 2
+ }
+
+ public enum PartyPrivacy
+ {
+ Private = 0,
+ Public = 1
+ }
+
+ public static void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId)
+ {
+ Callbacks = handlers;
+
+ EventHandlers staticEventHandlers = new EventHandlers();
+ staticEventHandlers.readyCallback += DiscordRpc.ReadyCallback;
+ staticEventHandlers.disconnectedCallback += DiscordRpc.DisconnectedCallback;
+ staticEventHandlers.errorCallback += DiscordRpc.ErrorCallback;
+ staticEventHandlers.joinCallback += DiscordRpc.JoinCallback;
+ staticEventHandlers.spectateCallback += DiscordRpc.SpectateCallback;
+ staticEventHandlers.requestCallback += DiscordRpc.RequestCallback;
+
+ InitializeInternal(applicationId, ref staticEventHandlers, autoRegister, optionalSteamId);
+ }
+
+ [DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)]
+ static extern void InitializeInternal(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId);
+
+ [DllImport("discord-rpc", EntryPoint = "Discord_Shutdown", CallingConvention = CallingConvention.Cdecl)]
+ public static extern void Shutdown();
+
+ [DllImport("discord-rpc", EntryPoint = "Discord_RunCallbacks", CallingConvention = CallingConvention.Cdecl)]
+ public static extern void RunCallbacks();
+
+ [DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)]
+ private static extern void UpdatePresenceNative(ref RichPresenceStruct presence);
+
+ [DllImport("discord-rpc", EntryPoint = "Discord_ClearPresence", CallingConvention = CallingConvention.Cdecl)]
+ public static extern void ClearPresence();
+
+ [DllImport("discord-rpc", EntryPoint = "Discord_Respond", CallingConvention = CallingConvention.Cdecl)]
+ public static extern void Respond(string userId, Reply reply);
+
+ [DllImport("discord-rpc", EntryPoint = "Discord_UpdateHandlers", CallingConvention = CallingConvention.Cdecl)]
+ public static extern void UpdateHandlers(ref EventHandlers handlers);
+
+ public static void UpdatePresence(RichPresence presence)
+ {
+ var presencestruct = presence.GetStruct();
+ UpdatePresenceNative(ref presencestruct);
+ presence.FreeMem();
+ }
+
+ public class RichPresence
+ {
+ private RichPresenceStruct _presence;
+ private readonly List<IntPtr> _buffers = new List<IntPtr>(10);
+
+ public string state; /* max 128 bytes */
+ public string details; /* max 128 bytes */
+ public long startTimestamp;
+ public long endTimestamp;
+ public string largeImageKey; /* max 32 bytes */
+ public string largeImageText; /* max 128 bytes */
+ public string smallImageKey; /* max 32 bytes */
+ public string smallImageText; /* max 128 bytes */
+ public string partyId; /* max 128 bytes */
+ public int partySize;
+ public int partyMax;
+ public PartyPrivacy partyPrivacy;
+ public string matchSecret; /* max 128 bytes */
+ public string joinSecret; /* max 128 bytes */
+ public string spectateSecret; /* max 128 bytes */
+ public bool instance;
+
+ /// <summary>
+ /// Get the <see cref="RichPresenceStruct"/> reprensentation of this instance
+ /// </summary>
+ /// <returns><see cref="RichPresenceStruct"/> reprensentation of this instance</returns>
+ internal RichPresenceStruct GetStruct()
+ {
+ if (_buffers.Count > 0)
+ {
+ FreeMem();
+ }
+
+ _presence.state = StrToPtr(state);
+ _presence.details = StrToPtr(details);
+ _presence.startTimestamp = startTimestamp;
+ _presence.endTimestamp = endTimestamp;
+ _presence.largeImageKey = StrToPtr(largeImageKey);
+ _presence.largeImageText = StrToPtr(largeImageText);
+ _presence.smallImageKey = StrToPtr(smallImageKey);
+ _presence.smallImageText = StrToPtr(smallImageText);
+ _presence.partyId = StrToPtr(partyId);
+ _presence.partySize = partySize;
+ _presence.partyMax = partyMax;
+ _presence.partyPrivacy = (int)partyPrivacy;
+ _presence.matchSecret = StrToPtr(matchSecret);
+ _presence.joinSecret = StrToPtr(joinSecret);
+ _presence.spectateSecret = StrToPtr(spectateSecret);
+ _presence.instance = instance;
+
+ return _presence;
+ }
+
+ /// <summary>
+ /// Returns a pointer to a representation of the given string with a size of maxbytes
+ /// </summary>
+ /// <param name="input">String to convert</param>
+ /// <returns>Pointer to the UTF-8 representation of <see cref="input"/></returns>
+ private IntPtr StrToPtr(string input)
+ {
+ if (string.IsNullOrEmpty(input)) return IntPtr.Zero;
+ var convbytecnt = Encoding.UTF8.GetByteCount(input);
+ var buffer = Marshal.AllocHGlobal(convbytecnt + 1);
+ for (int i = 0; i < convbytecnt + 1; i++)
+ {
+ Marshal.WriteByte(buffer, i, 0);
+ }
+ _buffers.Add(buffer);
+ Marshal.Copy(Encoding.UTF8.GetBytes(input), 0, buffer, convbytecnt);
+ return buffer;
+ }
+
+ /// <summary>
+ /// Convert string to UTF-8 and add null termination
+ /// </summary>
+ /// <param name="toconv">string to convert</param>
+ /// <returns>UTF-8 representation of <see cref="toconv"/> with added null termination</returns>
+ private static string StrToUtf8NullTerm(string toconv)
+ {
+ var str = toconv.Trim();
+ var bytes = Encoding.Default.GetBytes(str);
+ if (bytes.Length > 0 && bytes[bytes.Length - 1] != 0)
+ {
+ str += "\0\0";
+ }
+ return Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(str));
+ }
+
+ /// <summary>
+ /// Free the allocated memory for conversion to <see cref="RichPresenceStruct"/>
+ /// </summary>
+ internal void FreeMem()
+ {
+ for (var i = _buffers.Count - 1; i >= 0; i--)
+ {
+ Marshal.FreeHGlobal(_buffers[i]);
+ _buffers.RemoveAt(i);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta b/externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta
new file mode 100644
index 0000000000..acd04b102f
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/DiscordRpc.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b4474a677de9d80409e98c5393ec5b1e
+timeCreated: 1501697692
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs b/externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs
new file mode 100644
index 0000000000..977745312c
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs
@@ -0,0 +1,101 @@
+using UnityEditor;
+using System.Diagnostics;
+using System.IO;
+
+[InitializeOnLoad]
+public class ScriptBatch
+{
+ static ScriptBatch()
+ {
+ EnsureDLL();
+ }
+
+ public static bool FileExists(string filename)
+ {
+ return new FileInfo(filename).Exists;
+ }
+
+ public static bool RunRpcBuildScript()
+ {
+ UnityEngine.Debug.Log("Try to run build script");
+
+ Process proc = new Process();
+#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
+ proc.StartInfo.UseShellExecute = false;
+ // brew installs cmake in /usr/local/bin, which Unity seems to strip from PATH?
+ string newPath = proc.StartInfo.EnvironmentVariables["PATH"] + ":/usr/local/bin";
+ proc.StartInfo.EnvironmentVariables["PATH"] = newPath;
+#endif
+ proc.StartInfo.FileName = "python";
+ proc.StartInfo.Arguments = "build.py unity";
+ proc.StartInfo.WorkingDirectory = "../..";
+ proc.Start();
+ proc.WaitForExit();
+ return proc.ExitCode == 0;
+ }
+
+ public static void EnsureDLL()
+ {
+ #if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
+ string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" };
+ string[] dstDlls = { "Assets/Plugins/x86/discord-rpc.dll", "Assets/Plugins/x86_64/discord-rpc.dll" };
+ string[] srcDlls = { "../../builds/install/win64-dynamic/bin/discord-rpc.dll", "../../builds/install/win64-dynamic/bin/discord-rpc.dll" };
+ #elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
+ string[] dstDirs = { "Assets/Plugins" };
+ string[] dstDlls = { "Assets/Plugins/discord-rpc.bundle" };
+ string[] srcDlls = { "../../builds/install/osx-dynamic/lib/libdiscord-rpc.dylib" };
+ #else
+ string[] dstDirs = { "Assets/Plugins", "Assets/Plugins/x86", "Assets/Plugins/x86_64" };
+ string[] dstDlls = { "Assets/Plugins/discord-rpc.so" };
+ string[] srcDlls = { "../../builds/install/linux-dynamic/lib/libdiscord-rpc.so" };
+ #endif
+
+ Debug.Assert(dstDlls.Length == srcDlls.Length);
+
+ bool exists = true;
+ foreach (string fname in dstDlls)
+ {
+ if (!FileExists(fname))
+ {
+ exists = false;
+ break;
+ }
+ }
+
+ if (exists)
+ {
+ return;
+ }
+
+ exists = true;
+ foreach (string fname in srcDlls)
+ {
+ if (!FileExists(fname))
+ {
+ exists = false;
+ break;
+ }
+ }
+
+ if (!exists)
+ {
+ if (!RunRpcBuildScript())
+ {
+ UnityEngine.Debug.LogError("Build failed");
+ return;
+ }
+ }
+
+ // make sure the dirs exist
+ foreach (string dirname in dstDirs)
+ {
+ Directory.CreateDirectory(dirname);
+ }
+
+ // Copy dlls
+ for (int i = 0; i < dstDlls.Length; ++i)
+ {
+ FileUtil.CopyFileOrDirectory(srcDlls[i], dstDlls[i]);
+ }
+ }
+} \ No newline at end of file
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta b/externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta
new file mode 100644
index 0000000000..c14e1e8b94
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/Editor/BuildHelper.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: e5aecc4633e5f594b85eaa39f49bb402
+timeCreated: 1512071254
+licenseType: Free
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/main.unity b/externals/discord-rpc/examples/button-clicker/Assets/main.unity
new file mode 100644
index 0000000000..c5074d5555
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/main.unity
@@ -0,0 +1,1278 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 8
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_TemporalCoherenceThreshold: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 9
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_TextureWidth: 1024
+ m_TextureHeight: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVRFiltering: 0
+ m_PVRFilteringMode: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousColorSigma: 1
+ m_PVRFilteringAtrousNormalSigma: 1
+ m_PVRFilteringAtrousPositionSigma: 1
+ m_LightingDataAsset: {fileID: 0}
+ m_UseShadowmask: 1
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &134146651
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 134146656}
+ - component: {fileID: 134146655}
+ - component: {fileID: 134146654}
+ - component: {fileID: 134146653}
+ - component: {fileID: 134146652}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &134146652
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134146651}
+ m_Enabled: 1
+--- !u!124 &134146653
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134146651}
+ m_Enabled: 1
+--- !u!92 &134146654
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134146651}
+ m_Enabled: 1
+--- !u!20 &134146655
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134146651}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+ m_StereoMirrorMode: 0
+--- !u!4 &134146656
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 134146651}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &359174702
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 359174703}
+ - component: {fileID: 359174705}
+ - component: {fileID: 359174704}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &359174703
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 359174702}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1032248339}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &359174704
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 359174702}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Button
+--- !u!222 &359174705
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 359174702}
+--- !u!1 &520806049
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 520806050}
+ - component: {fileID: 520806052}
+ - component: {fileID: 520806051}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &520806050
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 520806049}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 806911717}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &520806051
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 520806049}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Yes
+--- !u!222 &520806052
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 520806049}
+--- !u!1 &657463235
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 657463238}
+ - component: {fileID: 657463237}
+ - component: {fileID: 657463236}
+ m_Layer: 5
+ m_Name: IsConnectedLabel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &657463236
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 657463235}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.89518255, g: 0.9338235, b: 0.23345588, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 24
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Discord Disconnected
+--- !u!222 &657463237
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 657463235}
+--- !u!224 &657463238
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 657463235}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1766020814}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 16, y: -19.00003}
+ m_SizeDelta: {x: 239.20001, y: 37.799988}
+ m_Pivot: {x: 0, y: 1}
+--- !u!1 &806911716
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 806911717}
+ - component: {fileID: 806911720}
+ - component: {fileID: 806911719}
+ - component: {fileID: 806911718}
+ m_Layer: 5
+ m_Name: ButtonRespondYes
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &806911717
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 806911716}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 520806050}
+ m_Father: {fileID: 1766020814}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -129.1, y: -116.3}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &806911718
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 806911716}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 0
+ m_TargetGraphic: {fileID: 806911719}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1929635629}
+ m_MethodName: RequestRespondYes
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &806911719
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 806911716}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &806911720
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 806911716}
+--- !u!1 &1032248338
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1032248339}
+ - component: {fileID: 1032248342}
+ - component: {fileID: 1032248341}
+ - component: {fileID: 1032248340}
+ m_Layer: 5
+ m_Name: Button
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1032248339
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1032248338}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 359174703}
+ m_Father: {fileID: 1766020814}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1032248340
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1032248338}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1032248341}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1929635629}
+ m_MethodName: OnClick
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &1032248341
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1032248338}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &1032248342
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1032248338}
+--- !u!1 &1238162986
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1238162987}
+ - component: {fileID: 1238162989}
+ - component: {fileID: 1238162988}
+ m_Layer: 5
+ m_Name: JoinRequestInfo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1238162987
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1238162986}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1766020814}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -0.0000085831, y: -66.9}
+ m_SizeDelta: {x: 323.38, y: 55.29}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1238162988
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1238162986}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 0.88965523, b: 0, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 1
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: No requests yet
+--- !u!222 &1238162989
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1238162986}
+--- !u!1 &1470895131
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1470895134}
+ - component: {fileID: 1470895133}
+ - component: {fileID: 1470895132}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1470895132
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1470895131}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1470895133
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1470895131}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 5
+--- !u!4 &1470895134
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1470895131}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1766020810
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1766020814}
+ - component: {fileID: 1766020813}
+ - component: {fileID: 1766020812}
+ - component: {fileID: 1766020811}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1766020811
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1766020810}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1766020812
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1766020810}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &1766020813
+Canvas:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1766020810}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1766020814
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1766020810}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 1032248339}
+ - {fileID: 657463238}
+ - {fileID: 806911717}
+ - {fileID: 1858885002}
+ - {fileID: 1238162987}
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &1858885001
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1858885002}
+ - component: {fileID: 1858885005}
+ - component: {fileID: 1858885004}
+ - component: {fileID: 1858885003}
+ m_Layer: 5
+ m_Name: ButtonRespondNo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1858885002
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1858885001}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1958982062}
+ m_Father: {fileID: 1766020814}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 128.7, y: -116.3}
+ m_SizeDelta: {x: 160, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1858885003
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1858885001}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_DisabledTrigger: Disabled
+ m_Interactable: 0
+ m_TargetGraphic: {fileID: 1858885004}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1929635629}
+ m_MethodName: RequestRespondNo
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+--- !u!114 &1858885004
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1858885001}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+--- !u!222 &1858885005
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1858885001}
+--- !u!1 &1929635628
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1929635630}
+ - component: {fileID: 1929635629}
+ m_Layer: 0
+ m_Name: Discord
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1929635629
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1929635628}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 27f0a5f59ffffa84c86547736e2e730a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ presence:
+ state: Button clicking
+ details: Best game ever
+ startTimestamp: 0
+ endTimestamp: 0
+ largeImageKey: stable-large
+ largeImageText:
+ smallImageKey: canary-small
+ smallImageText:
+ partyId: abcdefg
+ partySize: 1
+ partyMax: 10
+ matchSecret: match_secret
+ joinSecret: join_secret
+ spectateSecret: spectate_secret
+ instance: 1
+ applicationId: 345229890980937739
+ optionalSteamId:
+ callbackCalls: 0
+ clickCounter: 0
+ joinRequest:
+ userId:
+ username:
+ discriminator:
+ avatar:
+ onConnect:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 657463236}
+ m_MethodName: set_text
+ m_Mode: 5
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument: Discord Connected
+ m_BoolArgument: 1
+ m_CallState: 2
+ m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+ onDisconnect:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 657463236}
+ m_MethodName: set_text
+ m_Mode: 5
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument: Discord Disconnected
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+ hasResponded:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1238162988}
+ m_MethodName: set_text
+ m_Mode: 5
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument: No requests yet
+ m_BoolArgument: 0
+ m_CallState: 2
+ - m_Target: {fileID: 806911718}
+ m_MethodName: set_interactable
+ m_Mode: 6
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ - m_Target: {fileID: 1858885003}
+ m_MethodName: set_interactable
+ m_Mode: 6
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+ onJoin:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: DiscordJoinEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+ onSpectate:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: DiscordJoinEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+ onJoinRequest:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1238162988}
+ m_MethodName: set_text
+ m_Mode: 5
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument: Someone asked to join!
+ m_BoolArgument: 0
+ m_CallState: 2
+ - m_Target: {fileID: 806911718}
+ m_MethodName: set_interactable
+ m_Mode: 6
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 1
+ m_CallState: 2
+ - m_Target: {fileID: 1858885003}
+ m_MethodName: set_interactable
+ m_Mode: 6
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 1
+ m_CallState: 2
+ m_TypeName: DiscordJoinRequestEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+ PublicKeyToken=null
+--- !u!4 &1929635630
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1929635628}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1958982061
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 5
+ m_Component:
+ - component: {fileID: 1958982062}
+ - component: {fileID: 1958982064}
+ - component: {fileID: 1958982063}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1958982062
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1958982061}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 1858885002}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1958982063
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1958982061}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: No
+--- !u!222 &1958982064
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1958982061}
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/main.unity.meta b/externals/discord-rpc/examples/button-clicker/Assets/main.unity.meta
new file mode 100644
index 0000000000..75654f195f
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/Assets/main.unity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3b03d21bb25fa494e8694cd6e4b6d769
+timeCreated: 1501696924
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset
new file mode 100644
index 0000000000..da6112576a
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/AudioManager.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!11 &1
+AudioManager:
+ m_ObjectHideFlags: 0
+ m_Volume: 1
+ Rolloff Scale: 1
+ Doppler Factor: 1
+ Default Speaker Mode: 2
+ m_SampleRate: 0
+ m_DSPBufferSize: 0
+ m_VirtualVoiceCount: 512
+ m_RealVoiceCount: 32
+ m_SpatializerPlugin:
+ m_AmbisonicDecoderPlugin:
+ m_DisableAudio: 0
+ m_VirtualizeEffects: 1
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset
new file mode 100644
index 0000000000..e7886b266a
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/ClusterInputManager.asset
@@ -0,0 +1,6 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!236 &1
+ClusterInputManager:
+ m_ObjectHideFlags: 0
+ m_Inputs: []
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset
new file mode 100644
index 0000000000..0be3d787c2
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/DynamicsManager.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!55 &1
+PhysicsManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 3
+ m_Gravity: {x: 0, y: -9.81, z: 0}
+ m_DefaultMaterial: {fileID: 0}
+ m_BounceThreshold: 2
+ m_SleepThreshold: 0.005
+ m_DefaultContactOffset: 0.01
+ m_DefaultSolverIterations: 6
+ m_DefaultSolverVelocityIterations: 1
+ m_QueriesHitBackfaces: 0
+ m_QueriesHitTriggers: 1
+ m_EnableAdaptiveForce: 0
+ m_EnablePCM: 1
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ m_AutoSimulation: 1
+ m_AutoSyncTransforms: 1
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset
new file mode 100644
index 0000000000..d8fda84837
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorBuildSettings.asset
@@ -0,0 +1,10 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1045 &1
+EditorBuildSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Scenes:
+ - enabled: 1
+ path: Assets/main.unity
+ guid: 3b03d21bb25fa494e8694cd6e4b6d769
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset
new file mode 100644
index 0000000000..c0c814fdf9
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/EditorSettings.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!159 &1
+EditorSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 4
+ m_ExternalVersionControlSupport: Visible Meta Files
+ m_SerializationMode: 2
+ m_DefaultBehaviorMode: 1
+ m_SpritePackerMode: 4
+ m_SpritePackerPaddingPower: 1
+ m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
+ m_ProjectGenerationRootNamespace:
+ m_UserGeneratedProjectSuffix:
+ m_CollabEditorSettings:
+ inProgressEnabled: 1
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset
new file mode 100644
index 0000000000..74d7b532b0
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/GraphicsSettings.asset
@@ -0,0 +1,61 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!30 &1
+GraphicsSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_Deferred:
+ m_Mode: 1
+ m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
+ m_DeferredReflections:
+ m_Mode: 1
+ m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
+ m_ScreenSpaceShadows:
+ m_Mode: 1
+ m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
+ m_LegacyDeferred:
+ m_Mode: 1
+ m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
+ m_DepthNormals:
+ m_Mode: 1
+ m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
+ m_MotionVectors:
+ m_Mode: 1
+ m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightHalo:
+ m_Mode: 1
+ m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
+ m_LensFlare:
+ m_Mode: 1
+ m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
+ m_AlwaysIncludedShaders:
+ - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
+ m_PreloadedShaders: []
+ m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
+ type: 0}
+ m_CustomRenderPipeline: {fileID: 0}
+ m_TransparencySortMode: 0
+ m_TransparencySortAxis: {x: 0, y: 0, z: 1}
+ m_DefaultRenderingPath: 1
+ m_DefaultMobileRenderingPath: 1
+ m_TierSettings: []
+ m_LightmapStripping: 0
+ m_FogStripping: 0
+ m_InstancingStripping: 0
+ m_LightmapKeepPlain: 1
+ m_LightmapKeepDirCombined: 1
+ m_LightmapKeepDynamicPlain: 1
+ m_LightmapKeepDynamicDirCombined: 1
+ m_LightmapKeepShadowMask: 1
+ m_LightmapKeepSubtractive: 1
+ m_FogKeepLinear: 1
+ m_FogKeepExp: 1
+ m_FogKeepExp2: 1
+ m_AlbedoSwatchInfos: []
+ m_LightsUseLinearIntensity: 0
+ m_LightsUseColorTemperature: 0
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset
new file mode 100644
index 0000000000..17c8f538e2
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/InputManager.asset
@@ -0,0 +1,295 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!13 &1
+InputManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Axes:
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: left
+ positiveButton: right
+ altNegativeButton: a
+ altPositiveButton: d
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: down
+ positiveButton: up
+ altNegativeButton: s
+ altPositiveButton: w
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left ctrl
+ altNegativeButton:
+ altPositiveButton: mouse 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left alt
+ altNegativeButton:
+ altPositiveButton: mouse 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left shift
+ altNegativeButton:
+ altPositiveButton: mouse 2
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: space
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse X
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse Y
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse ScrollWheel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 2
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 0
+ type: 2
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 1
+ type: 2
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 0
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 1
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 2
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 3
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: return
+ altNegativeButton:
+ altPositiveButton: joystick button 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: enter
+ altNegativeButton:
+ altPositiveButton: space
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Cancel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: escape
+ altNegativeButton:
+ altPositiveButton: joystick button 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset
new file mode 100644
index 0000000000..6dd520f63a
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/NavMeshAreas.asset
@@ -0,0 +1,89 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!126 &1
+NavMeshProjectSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ areas:
+ - name: Walkable
+ cost: 1
+ - name: Not Walkable
+ cost: 1
+ - name: Jump
+ cost: 2
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ m_LastAgentTypeID: -887442657
+ m_Settings:
+ - serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.75
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ m_SettingNames:
+ - Humanoid
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset
new file mode 100644
index 0000000000..5dc6a831d9
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/NetworkManager.asset
@@ -0,0 +1,8 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!149 &1
+NetworkManager:
+ m_ObjectHideFlags: 0
+ m_DebugLevel: 0
+ m_Sendrate: 15
+ m_AssetToPrefab: {}
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset
new file mode 100644
index 0000000000..132ee6bc86
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/Physics2DSettings.asset
@@ -0,0 +1,37 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!19 &1
+Physics2DSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 3
+ m_Gravity: {x: 0, y: -9.81}
+ m_DefaultMaterial: {fileID: 0}
+ m_VelocityIterations: 8
+ m_PositionIterations: 3
+ m_VelocityThreshold: 1
+ m_MaxLinearCorrection: 0.2
+ m_MaxAngularCorrection: 8
+ m_MaxTranslationSpeed: 100
+ m_MaxRotationSpeed: 360
+ m_BaumgarteScale: 0.2
+ m_BaumgarteTimeOfImpactScale: 0.75
+ m_TimeToSleep: 0.5
+ m_LinearSleepTolerance: 0.01
+ m_AngularSleepTolerance: 2
+ m_DefaultContactOffset: 0.01
+ m_AutoSimulation: 1
+ m_QueriesHitTriggers: 1
+ m_QueriesStartInColliders: 1
+ m_ChangeStopsCallbacks: 0
+ m_CallbacksOnDisable: 1
+ m_AutoSyncTransforms: 1
+ m_AlwaysShowColliders: 0
+ m_ShowColliderSleep: 1
+ m_ShowColliderContacts: 0
+ m_ShowColliderAABB: 0
+ m_ContactArrowScale: 0.2
+ m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
+ m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
+ m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
+ m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset
new file mode 100644
index 0000000000..f60fe83aa9
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectSettings.asset
@@ -0,0 +1,610 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!129 &1
+PlayerSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ productGUID: 5eccc60d3e382a346a65f512d6b81b84
+ AndroidProfiler: 0
+ AndroidFilterTouchesWhenObscured: 0
+ defaultScreenOrientation: 4
+ targetDevice: 2
+ useOnDemandResources: 0
+ accelerometerFrequency: 60
+ companyName: Discord Inc.
+ productName: button-clicker
+ defaultCursor: {fileID: 0}
+ cursorHotspot: {x: 0, y: 0}
+ m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
+ m_ShowUnitySplashScreen: 1
+ m_ShowUnitySplashLogo: 1
+ m_SplashScreenOverlayOpacity: 1
+ m_SplashScreenAnimation: 1
+ m_SplashScreenLogoStyle: 1
+ m_SplashScreenDrawMode: 0
+ m_SplashScreenBackgroundAnimationZoom: 1
+ m_SplashScreenLogoAnimationZoom: 1
+ m_SplashScreenBackgroundLandscapeAspect: 1
+ m_SplashScreenBackgroundPortraitAspect: 1
+ m_SplashScreenBackgroundLandscapeUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenBackgroundPortraitUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenLogos: []
+ m_VirtualRealitySplashScreen: {fileID: 0}
+ m_HolographicTrackingLossScreen: {fileID: 0}
+ defaultScreenWidth: 1024
+ defaultScreenHeight: 768
+ defaultScreenWidthWeb: 960
+ defaultScreenHeightWeb: 600
+ m_StereoRenderingPath: 0
+ m_ActiveColorSpace: 0
+ m_MTRendering: 1
+ m_StackTraceTypes: 010000000100000001000000010000000100000001000000
+ iosShowActivityIndicatorOnLoading: -1
+ androidShowActivityIndicatorOnLoading: -1
+ tizenShowActivityIndicatorOnLoading: -1
+ iosAppInBackgroundBehavior: 0
+ displayResolutionDialog: 1
+ iosAllowHTTPDownload: 1
+ allowedAutorotateToPortrait: 1
+ allowedAutorotateToPortraitUpsideDown: 1
+ allowedAutorotateToLandscapeRight: 1
+ allowedAutorotateToLandscapeLeft: 1
+ useOSAutorotation: 1
+ use32BitDisplayBuffer: 1
+ disableDepthAndStencilBuffers: 0
+ androidBlitType: 0
+ defaultIsFullScreen: 1
+ defaultIsNativeResolution: 1
+ macRetinaSupport: 1
+ runInBackground: 0
+ captureSingleScreen: 0
+ muteOtherAudioSources: 0
+ Prepare IOS For Recording: 0
+ Force IOS Speakers When Recording: 0
+ submitAnalytics: 1
+ usePlayerLog: 1
+ bakeCollisionMeshes: 0
+ forceSingleInstance: 0
+ resizableWindow: 0
+ useMacAppStoreValidation: 0
+ macAppStoreCategory: public.app-category.games
+ gpuSkinning: 0
+ graphicsJobs: 0
+ xboxPIXTextureCapture: 0
+ xboxEnableAvatar: 0
+ xboxEnableKinect: 0
+ xboxEnableKinectAutoTracking: 0
+ xboxEnableFitness: 0
+ visibleInBackground: 1
+ allowFullscreenSwitch: 1
+ graphicsJobMode: 0
+ macFullscreenMode: 2
+ d3d9FullscreenMode: 1
+ d3d11FullscreenMode: 1
+ xboxSpeechDB: 0
+ xboxEnableHeadOrientation: 0
+ xboxEnableGuest: 0
+ xboxEnablePIXSampling: 0
+ metalFramebufferOnly: 0
+ n3dsDisableStereoscopicView: 0
+ n3dsEnableSharedListOpt: 1
+ n3dsEnableVSync: 0
+ ignoreAlphaClear: 0
+ xboxOneResolution: 0
+ xboxOneMonoLoggingLevel: 0
+ xboxOneLoggingLevel: 1
+ xboxOneDisableEsram: 0
+ xboxOnePresentImmediateThreshold: 0
+ videoMemoryForVertexBuffers: 0
+ psp2PowerMode: 0
+ psp2AcquireBGM: 1
+ wiiUTVResolution: 0
+ wiiUGamePadMSAA: 1
+ wiiUSupportsNunchuk: 0
+ wiiUSupportsClassicController: 0
+ wiiUSupportsBalanceBoard: 0
+ wiiUSupportsMotionPlus: 0
+ wiiUSupportsProController: 0
+ wiiUAllowScreenCapture: 1
+ wiiUControllerCount: 0
+ m_SupportedAspectRatios:
+ 4:3: 1
+ 5:4: 1
+ 16:10: 1
+ 16:9: 1
+ Others: 1
+ bundleVersion: 1.0
+ preloadedAssets: []
+ metroInputSource: 0
+ m_HolographicPauseOnTrackingLoss: 1
+ xboxOneDisableKinectGpuReservation: 0
+ xboxOneEnable7thCore: 0
+ vrSettings:
+ cardboard:
+ depthFormat: 0
+ enableTransitionView: 0
+ daydream:
+ depthFormat: 0
+ useSustainedPerformanceMode: 0
+ enableVideoLayer: 0
+ useProtectedVideoMemory: 0
+ hololens:
+ depthFormat: 1
+ protectGraphicsMemory: 0
+ useHDRDisplay: 0
+ m_ColorGamuts: 00000000
+ targetPixelDensity: 0
+ resolutionScalingMode: 0
+ androidSupportedAspectRatio: 1
+ androidMaxAspectRatio: 2.1
+ applicationIdentifier: {}
+ buildNumber: {}
+ AndroidBundleVersionCode: 1
+ AndroidMinSdkVersion: 16
+ AndroidTargetSdkVersion: 0
+ AndroidPreferredInstallLocation: 1
+ aotOptions:
+ stripEngineCode: 1
+ iPhoneStrippingLevel: 0
+ iPhoneScriptCallOptimization: 0
+ ForceInternetPermission: 0
+ ForceSDCardPermission: 0
+ CreateWallpaper: 0
+ APKExpansionFiles: 0
+ keepLoadedShadersAlive: 0
+ StripUnusedMeshComponents: 0
+ VertexChannelCompressionMask:
+ serializedVersion: 2
+ m_Bits: 238
+ iPhoneSdkVersion: 988
+ iOSTargetOSVersionString: 7.0
+ tvOSSdkVersion: 0
+ tvOSRequireExtendedGameController: 0
+ tvOSTargetOSVersionString: 9.0
+ uIPrerenderedIcon: 0
+ uIRequiresPersistentWiFi: 0
+ uIRequiresFullScreen: 1
+ uIStatusBarHidden: 1
+ uIExitOnSuspend: 0
+ uIStatusBarStyle: 0
+ iPhoneSplashScreen: {fileID: 0}
+ iPhoneHighResSplashScreen: {fileID: 0}
+ iPhoneTallHighResSplashScreen: {fileID: 0}
+ iPhone47inSplashScreen: {fileID: 0}
+ iPhone55inPortraitSplashScreen: {fileID: 0}
+ iPhone55inLandscapeSplashScreen: {fileID: 0}
+ iPadPortraitSplashScreen: {fileID: 0}
+ iPadHighResPortraitSplashScreen: {fileID: 0}
+ iPadLandscapeSplashScreen: {fileID: 0}
+ iPadHighResLandscapeSplashScreen: {fileID: 0}
+ appleTVSplashScreen: {fileID: 0}
+ tvOSSmallIconLayers: []
+ tvOSLargeIconLayers: []
+ tvOSTopShelfImageLayers: []
+ tvOSTopShelfImageWideLayers: []
+ iOSLaunchScreenType: 0
+ iOSLaunchScreenPortrait: {fileID: 0}
+ iOSLaunchScreenLandscape: {fileID: 0}
+ iOSLaunchScreenBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreenFillPct: 100
+ iOSLaunchScreenSize: 100
+ iOSLaunchScreenCustomXibPath:
+ iOSLaunchScreeniPadType: 0
+ iOSLaunchScreeniPadImage: {fileID: 0}
+ iOSLaunchScreeniPadBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreeniPadFillPct: 100
+ iOSLaunchScreeniPadSize: 100
+ iOSLaunchScreeniPadCustomXibPath:
+ iOSDeviceRequirements: []
+ iOSURLSchemes: []
+ iOSBackgroundModes: 0
+ iOSMetalForceHardShadows: 0
+ metalEditorSupport: 1
+ metalAPIValidation: 1
+ iOSRenderExtraFrameOnPause: 0
+ appleDeveloperTeamID:
+ iOSManualSigningProvisioningProfileID:
+ tvOSManualSigningProvisioningProfileID:
+ appleEnableAutomaticSigning: 0
+ AndroidTargetDevice: 0
+ AndroidSplashScreenScale: 0
+ androidSplashScreen: {fileID: 0}
+ AndroidKeystoreName:
+ AndroidKeyaliasName:
+ AndroidTVCompatibility: 1
+ AndroidIsGame: 1
+ AndroidEnableTango: 0
+ androidEnableBanner: 1
+ androidUseLowAccuracyLocation: 0
+ m_AndroidBanners:
+ - width: 320
+ height: 180
+ banner: {fileID: 0}
+ androidGamepadSupportLevel: 0
+ resolutionDialogBanner: {fileID: 0}
+ m_BuildTargetIcons: []
+ m_BuildTargetBatching: []
+ m_BuildTargetGraphicsAPIs: []
+ m_BuildTargetVRSettings: []
+ m_BuildTargetEnableVuforiaSettings: []
+ openGLRequireES31: 0
+ openGLRequireES31AEP: 0
+ m_TemplateCustomTags: {}
+ mobileMTRendering:
+ Android: 1
+ iPhone: 1
+ tvOS: 1
+ wiiUTitleID: 0005000011000000
+ wiiUGroupID: 00010000
+ wiiUCommonSaveSize: 4096
+ wiiUAccountSaveSize: 2048
+ wiiUOlvAccessKey: 0
+ wiiUTinCode: 0
+ wiiUJoinGameId: 0
+ wiiUJoinGameModeMask: 0000000000000000
+ wiiUCommonBossSize: 0
+ wiiUAccountBossSize: 0
+ wiiUAddOnUniqueIDs: []
+ wiiUMainThreadStackSize: 3072
+ wiiULoaderThreadStackSize: 1024
+ wiiUSystemHeapSize: 128
+ wiiUTVStartupScreen: {fileID: 0}
+ wiiUGamePadStartupScreen: {fileID: 0}
+ wiiUDrcBufferDisabled: 0
+ wiiUProfilerLibPath:
+ playModeTestRunnerEnabled: 0
+ actionOnDotNetUnhandledException: 1
+ enableInternalProfiler: 0
+ logObjCUncaughtExceptions: 1
+ enableCrashReportAPI: 0
+ cameraUsageDescription:
+ locationUsageDescription:
+ microphoneUsageDescription:
+ switchNetLibKey:
+ switchSocketMemoryPoolSize: 6144
+ switchSocketAllocatorPoolSize: 128
+ switchSocketConcurrencyLimit: 14
+ switchScreenResolutionBehavior: 2
+ switchUseCPUProfiler: 0
+ switchApplicationID: 0x01004b9000490000
+ switchNSODependencies:
+ switchTitleNames_0:
+ switchTitleNames_1:
+ switchTitleNames_2:
+ switchTitleNames_3:
+ switchTitleNames_4:
+ switchTitleNames_5:
+ switchTitleNames_6:
+ switchTitleNames_7:
+ switchTitleNames_8:
+ switchTitleNames_9:
+ switchTitleNames_10:
+ switchTitleNames_11:
+ switchPublisherNames_0:
+ switchPublisherNames_1:
+ switchPublisherNames_2:
+ switchPublisherNames_3:
+ switchPublisherNames_4:
+ switchPublisherNames_5:
+ switchPublisherNames_6:
+ switchPublisherNames_7:
+ switchPublisherNames_8:
+ switchPublisherNames_9:
+ switchPublisherNames_10:
+ switchPublisherNames_11:
+ switchIcons_0: {fileID: 0}
+ switchIcons_1: {fileID: 0}
+ switchIcons_2: {fileID: 0}
+ switchIcons_3: {fileID: 0}
+ switchIcons_4: {fileID: 0}
+ switchIcons_5: {fileID: 0}
+ switchIcons_6: {fileID: 0}
+ switchIcons_7: {fileID: 0}
+ switchIcons_8: {fileID: 0}
+ switchIcons_9: {fileID: 0}
+ switchIcons_10: {fileID: 0}
+ switchIcons_11: {fileID: 0}
+ switchSmallIcons_0: {fileID: 0}
+ switchSmallIcons_1: {fileID: 0}
+ switchSmallIcons_2: {fileID: 0}
+ switchSmallIcons_3: {fileID: 0}
+ switchSmallIcons_4: {fileID: 0}
+ switchSmallIcons_5: {fileID: 0}
+ switchSmallIcons_6: {fileID: 0}
+ switchSmallIcons_7: {fileID: 0}
+ switchSmallIcons_8: {fileID: 0}
+ switchSmallIcons_9: {fileID: 0}
+ switchSmallIcons_10: {fileID: 0}
+ switchSmallIcons_11: {fileID: 0}
+ switchManualHTML:
+ switchAccessibleURLs:
+ switchLegalInformation:
+ switchMainThreadStackSize: 1048576
+ switchPresenceGroupId: 0x01004b9000490000
+ switchLogoHandling: 0
+ switchReleaseVersion: 0
+ switchDisplayVersion: 1.0.0
+ switchStartupUserAccount: 0
+ switchTouchScreenUsage: 0
+ switchSupportedLanguagesMask: 0
+ switchLogoType: 0
+ switchApplicationErrorCodeCategory:
+ switchUserAccountSaveDataSize: 0
+ switchUserAccountSaveDataJournalSize: 0
+ switchApplicationAttribute: 0
+ switchCardSpecSize: 4
+ switchCardSpecClock: 25
+ switchRatingsMask: 0
+ switchRatingsInt_0: 0
+ switchRatingsInt_1: 0
+ switchRatingsInt_2: 0
+ switchRatingsInt_3: 0
+ switchRatingsInt_4: 0
+ switchRatingsInt_5: 0
+ switchRatingsInt_6: 0
+ switchRatingsInt_7: 0
+ switchRatingsInt_8: 0
+ switchRatingsInt_9: 0
+ switchRatingsInt_10: 0
+ switchRatingsInt_11: 0
+ switchLocalCommunicationIds_0: 0x01004b9000490000
+ switchLocalCommunicationIds_1:
+ switchLocalCommunicationIds_2:
+ switchLocalCommunicationIds_3:
+ switchLocalCommunicationIds_4:
+ switchLocalCommunicationIds_5:
+ switchLocalCommunicationIds_6:
+ switchLocalCommunicationIds_7:
+ switchParentalControl: 0
+ switchAllowsScreenshot: 1
+ switchDataLossConfirmation: 0
+ switchSupportedNpadStyles: 3
+ switchSocketConfigEnabled: 0
+ switchTcpInitialSendBufferSize: 32
+ switchTcpInitialReceiveBufferSize: 64
+ switchTcpAutoSendBufferSizeMax: 256
+ switchTcpAutoReceiveBufferSizeMax: 256
+ switchUdpSendBufferSize: 9
+ switchUdpReceiveBufferSize: 42
+ switchSocketBufferEfficiency: 4
+ switchSocketInitializeEnabled: 1
+ switchNetworkInterfaceManagerInitializeEnabled: 1
+ switchPlayerConnectionEnabled: 1
+ ps4NPAgeRating: 12
+ ps4NPTitleSecret:
+ ps4NPTrophyPackPath:
+ ps4ParentalLevel: 11
+ ps4ContentID: ED1633-NPXX51362_00-0000000000000000
+ ps4Category: 0
+ ps4MasterVersion: 01.00
+ ps4AppVersion: 01.00
+ ps4AppType: 0
+ ps4ParamSfxPath:
+ ps4VideoOutPixelFormat: 0
+ ps4VideoOutInitialWidth: 1920
+ ps4VideoOutBaseModeInitialWidth: 1920
+ ps4VideoOutReprojectionRate: 120
+ ps4PronunciationXMLPath:
+ ps4PronunciationSIGPath:
+ ps4BackgroundImagePath:
+ ps4StartupImagePath:
+ ps4SaveDataImagePath:
+ ps4SdkOverride:
+ ps4BGMPath:
+ ps4ShareFilePath:
+ ps4ShareOverlayImagePath:
+ ps4PrivacyGuardImagePath:
+ ps4NPtitleDatPath:
+ ps4RemotePlayKeyAssignment: -1
+ ps4RemotePlayKeyMappingDir:
+ ps4PlayTogetherPlayerCount: 0
+ ps4EnterButtonAssignment: 1
+ ps4ApplicationParam1: 0
+ ps4ApplicationParam2: 0
+ ps4ApplicationParam3: 0
+ ps4ApplicationParam4: 0
+ ps4DownloadDataSize: 0
+ ps4GarlicHeapSize: 2048
+ ps4ProGarlicHeapSize: 2560
+ ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
+ ps4pnSessions: 1
+ ps4pnPresence: 1
+ ps4pnFriends: 1
+ ps4pnGameCustomData: 1
+ playerPrefsSupport: 0
+ restrictedAudioUsageRights: 0
+ ps4UseResolutionFallback: 0
+ ps4ReprojectionSupport: 0
+ ps4UseAudio3dBackend: 0
+ ps4SocialScreenEnabled: 0
+ ps4ScriptOptimizationLevel: 0
+ ps4Audio3dVirtualSpeakerCount: 14
+ ps4attribCpuUsage: 0
+ ps4PatchPkgPath:
+ ps4PatchLatestPkgPath:
+ ps4PatchChangeinfoPath:
+ ps4PatchDayOne: 0
+ ps4attribUserManagement: 0
+ ps4attribMoveSupport: 0
+ ps4attrib3DSupport: 0
+ ps4attribShareSupport: 0
+ ps4attribExclusiveVR: 0
+ ps4disableAutoHideSplash: 0
+ ps4videoRecordingFeaturesUsed: 0
+ ps4contentSearchFeaturesUsed: 0
+ ps4attribEyeToEyeDistanceSettingVR: 0
+ ps4IncludedModules: []
+ monoEnv:
+ psp2Splashimage: {fileID: 0}
+ psp2NPTrophyPackPath:
+ psp2NPSupportGBMorGJP: 0
+ psp2NPAgeRating: 12
+ psp2NPTitleDatPath:
+ psp2NPCommsID:
+ psp2NPCommunicationsID:
+ psp2NPCommsPassphrase:
+ psp2NPCommsSig:
+ psp2ParamSfxPath:
+ psp2ManualPath:
+ psp2LiveAreaGatePath:
+ psp2LiveAreaBackroundPath:
+ psp2LiveAreaPath:
+ psp2LiveAreaTrialPath:
+ psp2PatchChangeInfoPath:
+ psp2PatchOriginalPackage:
+ psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui
+ psp2KeystoneFile:
+ psp2MemoryExpansionMode: 0
+ psp2DRMType: 0
+ psp2StorageType: 0
+ psp2MediaCapacity: 0
+ psp2DLCConfigPath:
+ psp2ThumbnailPath:
+ psp2BackgroundPath:
+ psp2SoundPath:
+ psp2TrophyCommId:
+ psp2TrophyPackagePath:
+ psp2PackagedResourcesPath:
+ psp2SaveDataQuota: 10240
+ psp2ParentalLevel: 1
+ psp2ShortTitle: Not Set
+ psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF
+ psp2Category: 0
+ psp2MasterVersion: 01.00
+ psp2AppVersion: 01.00
+ psp2TVBootMode: 0
+ psp2EnterButtonAssignment: 2
+ psp2TVDisableEmu: 0
+ psp2AllowTwitterDialog: 1
+ psp2Upgradable: 0
+ psp2HealthWarning: 0
+ psp2UseLibLocation: 0
+ psp2InfoBarOnStartup: 0
+ psp2InfoBarColor: 0
+ psp2ScriptOptimizationLevel: 0
+ psmSplashimage: {fileID: 0}
+ splashScreenBackgroundSourceLandscape: {fileID: 0}
+ splashScreenBackgroundSourcePortrait: {fileID: 0}
+ spritePackerPolicy:
+ webGLMemorySize: 256
+ webGLExceptionSupport: 1
+ webGLNameFilesAsHashes: 0
+ webGLDataCaching: 0
+ webGLDebugSymbols: 0
+ webGLEmscriptenArgs:
+ webGLModulesDirectory:
+ webGLTemplate: APPLICATION:Default
+ webGLAnalyzeBuildSize: 0
+ webGLUseEmbeddedResources: 0
+ webGLUseWasm: 0
+ webGLCompressionFormat: 1
+ scriptingDefineSymbols: {}
+ platformArchitecture: {}
+ scriptingBackend: {}
+ incrementalIl2cppBuild: {}
+ additionalIl2CppArgs:
+ scriptingRuntimeVersion: 0
+ apiCompatibilityLevelPerPlatform: {}
+ m_RenderingPath: 1
+ m_MobileRenderingPath: 1
+ metroPackageName: button-clicker
+ metroPackageVersion:
+ metroCertificatePath:
+ metroCertificatePassword:
+ metroCertificateSubject:
+ metroCertificateIssuer:
+ metroCertificateNotAfter: 0000000000000000
+ metroApplicationDescription: button-clicker
+ wsaImages: {}
+ metroTileShortName:
+ metroCommandLineArgsFile:
+ metroTileShowName: 0
+ metroMediumTileShowName: 0
+ metroLargeTileShowName: 0
+ metroWideTileShowName: 0
+ metroDefaultTileSize: 1
+ metroTileForegroundText: 2
+ metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
+ metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
+ a: 1}
+ metroSplashScreenUseBackgroundColor: 0
+ platformCapabilities: {}
+ metroFTAName:
+ metroFTAFileTypes: []
+ metroProtocolName:
+ metroCompilationOverrides: 1
+ tizenProductDescription:
+ tizenProductURL:
+ tizenSigningProfileName:
+ tizenGPSPermissions: 0
+ tizenMicrophonePermissions: 0
+ tizenDeploymentTarget:
+ tizenDeploymentTargetType: -1
+ tizenMinOSVersion: 1
+ n3dsUseExtSaveData: 0
+ n3dsCompressStaticMem: 1
+ n3dsExtSaveDataNumber: 0x12345
+ n3dsStackSize: 131072
+ n3dsTargetPlatform: 2
+ n3dsRegion: 7
+ n3dsMediaSize: 0
+ n3dsLogoStyle: 3
+ n3dsTitle: GameName
+ n3dsProductCode:
+ n3dsApplicationId: 0xFF3FF
+ stvDeviceAddress:
+ stvProductDescription:
+ stvProductAuthor:
+ stvProductAuthorEmail:
+ stvProductLink:
+ stvProductCategory: 0
+ XboxOneProductId:
+ XboxOneUpdateKey:
+ XboxOneSandboxId:
+ XboxOneContentId:
+ XboxOneTitleId:
+ XboxOneSCId:
+ XboxOneGameOsOverridePath:
+ XboxOnePackagingOverridePath:
+ XboxOneAppManifestOverridePath:
+ XboxOnePackageEncryption: 0
+ XboxOnePackageUpdateGranularity: 2
+ XboxOneDescription:
+ XboxOneLanguage:
+ - enus
+ XboxOneCapability: []
+ XboxOneGameRating: {}
+ XboxOneIsContentPackage: 0
+ XboxOneEnableGPUVariability: 0
+ XboxOneSockets: {}
+ XboxOneSplashScreen: {fileID: 0}
+ XboxOneAllowedProductIds: []
+ XboxOnePersistentLocalStorageSize: 0
+ xboxOneScriptCompiler: 0
+ vrEditorSettings:
+ daydream:
+ daydreamIconForeground: {fileID: 0}
+ daydreamIconBackground: {fileID: 0}
+ cloudServicesEnabled: {}
+ facebookSdkVersion: 7.9.4
+ apiCompatibilityLevel: 2
+ cloudProjectId:
+ projectName:
+ organizationId:
+ cloudEnabled: 0
+ enableNativePlatformBackendsForNewInputSystem: 0
+ disableOldInputManagerSupport: 0
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt b/externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt
new file mode 100644
index 0000000000..7a6fffb8be
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/ProjectVersion.txt
@@ -0,0 +1 @@
+m_EditorVersion: 2017.2.0f3
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset
new file mode 100644
index 0000000000..86c047f26e
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/QualitySettings.asset
@@ -0,0 +1,193 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!47 &1
+QualitySettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 5
+ m_CurrentQuality: 5
+ m_QualitySettings:
+ - serializedVersion: 2
+ name: Very Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 15
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ blendWeights: 1
+ textureQuality: 1
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 0
+ lodBias: 0.3
+ maximumLODLevel: 0
+ particleRaycastBudget: 4
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 4
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ blendWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 0
+ lodBias: 0.4
+ maximumLODLevel: 0
+ particleRaycastBudget: 16
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 4
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Medium
+ pixelLightCount: 1
+ shadows: 1
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ blendWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ vSyncCount: 1
+ lodBias: 0.7
+ maximumLODLevel: 0
+ particleRaycastBudget: 64
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 4
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: High
+ pixelLightCount: 2
+ shadows: 2
+ shadowResolution: 1
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 40
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ blendWeights: 2
+ textureQuality: 0
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 1
+ maximumLODLevel: 0
+ particleRaycastBudget: 256
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 4
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Very High
+ pixelLightCount: 3
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 70
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ blendWeights: 4
+ textureQuality: 0
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 1.5
+ maximumLODLevel: 0
+ particleRaycastBudget: 1024
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 4
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ - serializedVersion: 2
+ name: Ultra
+ pixelLightCount: 4
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 4
+ shadowDistance: 150
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ blendWeights: 4
+ textureQuality: 0
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ vSyncCount: 1
+ lodBias: 2
+ maximumLODLevel: 0
+ particleRaycastBudget: 4096
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 4
+ resolutionScalingFixedDPIFactor: 1
+ excludedTargetPlatforms: []
+ m_PerPlatformDefaultQuality:
+ Android: 2
+ Nintendo 3DS: 5
+ Nintendo Switch: 5
+ PS4: 5
+ PSM: 5
+ PSP2: 2
+ Samsung TV: 2
+ Standalone: 5
+ Tizen: 2
+ Web: 5
+ WebGL: 3
+ WiiU: 5
+ Windows Store Apps: 5
+ XboxOne: 5
+ iPhone: 2
+ tvOS: 2
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset
new file mode 100644
index 0000000000..1c92a7840e
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/TagManager.asset
@@ -0,0 +1,43 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!78 &1
+TagManager:
+ serializedVersion: 2
+ tags: []
+ layers:
+ - Default
+ - TransparentFX
+ - Ignore Raycast
+ -
+ - Water
+ - UI
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ m_SortingLayers:
+ - name: Default
+ uniqueID: 0
+ locked: 0
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset
new file mode 100644
index 0000000000..558a017e1f
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/TimeManager.asset
@@ -0,0 +1,9 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!5 &1
+TimeManager:
+ m_ObjectHideFlags: 0
+ Fixed Timestep: 0.02
+ Maximum Allowed Timestep: 0.33333334
+ m_TimeScale: 1
+ Maximum Particle Timestep: 0.03
diff --git a/externals/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset b/externals/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset
new file mode 100644
index 0000000000..1cc5485b8a
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/ProjectSettings/UnityConnectSettings.asset
@@ -0,0 +1,34 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!310 &1
+UnityConnectSettings:
+ m_ObjectHideFlags: 0
+ m_Enabled: 0
+ m_TestMode: 0
+ m_TestEventUrl:
+ m_TestConfigUrl:
+ m_TestInitMode: 0
+ CrashReportingSettings:
+ m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes
+ m_Enabled: 0
+ m_CaptureEditorExceptions: 1
+ UnityPurchasingSettings:
+ m_Enabled: 0
+ m_TestMode: 0
+ UnityAnalyticsSettings:
+ m_Enabled: 0
+ m_InitializeOnStartup: 1
+ m_TestMode: 0
+ m_TestEventUrl:
+ m_TestConfigUrl:
+ UnityAdsSettings:
+ m_Enabled: 0
+ m_InitializeOnStartup: 1
+ m_TestMode: 0
+ m_EnabledPlatforms: 4294967295
+ m_IosGameId:
+ m_AndroidGameId:
+ m_GameIds: {}
+ m_GameId:
+ PerformanceReportingSettings:
+ m_Enabled: 0
diff --git a/externals/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json b/externals/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json
new file mode 100644
index 0000000000..526aca6057
--- /dev/null
+++ b/externals/discord-rpc/examples/button-clicker/UnityPackageManager/manifest.json
@@ -0,0 +1,4 @@
+{
+ "dependencies": {
+ }
+}
diff --git a/externals/discord-rpc/examples/send-presence/CMakeLists.txt b/externals/discord-rpc/examples/send-presence/CMakeLists.txt
new file mode 100644
index 0000000000..8a67d472ee
--- /dev/null
+++ b/externals/discord-rpc/examples/send-presence/CMakeLists.txt
@@ -0,0 +1,21 @@
+include_directories(${PROJECT_SOURCE_DIR}/include)
+add_executable(
+ send-presence
+ MACOSX_BUNDLE
+ send-presence.c
+)
+set_target_properties(send-presence PROPERTIES
+ MACOSX_BUNDLE_BUNDLE_NAME "Send Presence"
+ MACOSX_BUNDLE_GUI_IDENTIFIER "com.discordapp.examples.send-presence"
+)
+target_link_libraries(send-presence discord-rpc)
+
+install(
+ TARGETS send-presence
+ RUNTIME
+ DESTINATION "bin"
+ CONFIGURATIONS Release
+ BUNDLE
+ DESTINATION "bin"
+ CONFIGURATIONS Release
+) \ No newline at end of file
diff --git a/externals/discord-rpc/examples/send-presence/send-presence.c b/externals/discord-rpc/examples/send-presence/send-presence.c
new file mode 100644
index 0000000000..1b651f2c49
--- /dev/null
+++ b/externals/discord-rpc/examples/send-presence/send-presence.c
@@ -0,0 +1,206 @@
+/*
+ This is a simple example in C of using the rich presence API asynchronously.
+*/
+
+#define _CRT_SECURE_NO_WARNINGS /* thanks Microsoft */
+
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "discord_rpc.h"
+
+static const char* APPLICATION_ID = "345229890980937739";
+static int FrustrationLevel = 0;
+static int64_t StartTime;
+static int SendPresence = 1;
+
+static int prompt(char* line, size_t size)
+{
+ int res;
+ char* nl;
+ printf("\n> ");
+ fflush(stdout);
+ res = fgets(line, (int)size, stdin) ? 1 : 0;
+ line[size - 1] = 0;
+ nl = strchr(line, '\n');
+ if (nl) {
+ *nl = 0;
+ }
+ return res;
+}
+
+static void updateDiscordPresence()
+{
+ if (SendPresence) {
+ char buffer[256];
+ DiscordRichPresence discordPresence;
+ memset(&discordPresence, 0, sizeof(discordPresence));
+ discordPresence.state = "West of House";
+ sprintf(buffer, "Frustration level: %d", FrustrationLevel);
+ discordPresence.details = buffer;
+ discordPresence.startTimestamp = StartTime;
+ discordPresence.endTimestamp = time(0) + 5 * 60;
+ discordPresence.largeImageKey = "canary-large";
+ discordPresence.smallImageKey = "ptb-small";
+ discordPresence.partyId = "party1234";
+ discordPresence.partySize = 1;
+ discordPresence.partyMax = 6;
+ discordPresence.partyPrivacy = DISCORD_PARTY_PUBLIC;
+ discordPresence.matchSecret = "xyzzy";
+ discordPresence.joinSecret = "join";
+ discordPresence.spectateSecret = "look";
+ discordPresence.instance = 0;
+ Discord_UpdatePresence(&discordPresence);
+ }
+ else {
+ Discord_ClearPresence();
+ }
+}
+
+static void handleDiscordReady(const DiscordUser* connectedUser)
+{
+ printf("\nDiscord: connected to user %s#%s - %s\n",
+ connectedUser->username,
+ connectedUser->discriminator,
+ connectedUser->userId);
+}
+
+static void handleDiscordDisconnected(int errcode, const char* message)
+{
+ printf("\nDiscord: disconnected (%d: %s)\n", errcode, message);
+}
+
+static void handleDiscordError(int errcode, const char* message)
+{
+ printf("\nDiscord: error (%d: %s)\n", errcode, message);
+}
+
+static void handleDiscordJoin(const char* secret)
+{
+ printf("\nDiscord: join (%s)\n", secret);
+}
+
+static void handleDiscordSpectate(const char* secret)
+{
+ printf("\nDiscord: spectate (%s)\n", secret);
+}
+
+static void handleDiscordJoinRequest(const DiscordUser* request)
+{
+ int response = -1;
+ char yn[4];
+ printf("\nDiscord: join request from %s#%s - %s\n",
+ request->username,
+ request->discriminator,
+ request->userId);
+ do {
+ printf("Accept? (y/n)");
+ if (!prompt(yn, sizeof(yn))) {
+ break;
+ }
+
+ if (!yn[0]) {
+ continue;
+ }
+
+ if (yn[0] == 'y') {
+ response = DISCORD_REPLY_YES;
+ break;
+ }
+
+ if (yn[0] == 'n') {
+ response = DISCORD_REPLY_NO;
+ break;
+ }
+ } while (1);
+ if (response != -1) {
+ Discord_Respond(request->userId, response);
+ }
+}
+
+static void discordInit()
+{
+ DiscordEventHandlers handlers;
+ memset(&handlers, 0, sizeof(handlers));
+ handlers.ready = handleDiscordReady;
+ handlers.disconnected = handleDiscordDisconnected;
+ handlers.errored = handleDiscordError;
+ handlers.joinGame = handleDiscordJoin;
+ handlers.spectateGame = handleDiscordSpectate;
+ handlers.joinRequest = handleDiscordJoinRequest;
+ Discord_Initialize(APPLICATION_ID, &handlers, 1, NULL);
+}
+
+static void gameLoop()
+{
+ char line[512];
+ char* space;
+
+ StartTime = time(0);
+
+ printf("You are standing in an open field west of a white house.\n");
+ while (prompt(line, sizeof(line))) {
+ if (line[0]) {
+ if (line[0] == 'q') {
+ break;
+ }
+
+ if (line[0] == 't') {
+ printf("Shutting off Discord.\n");
+ Discord_Shutdown();
+ continue;
+ }
+
+ if (line[0] == 'c') {
+ if (SendPresence) {
+ printf("Clearing presence information.\n");
+ SendPresence = 0;
+ }
+ else {
+ printf("Restoring presence information.\n");
+ SendPresence = 1;
+ }
+ updateDiscordPresence();
+ continue;
+ }
+
+ if (line[0] == 'y') {
+ printf("Reinit Discord.\n");
+ discordInit();
+ continue;
+ }
+
+ if (time(NULL) & 1) {
+ printf("I don't understand that.\n");
+ }
+ else {
+ space = strchr(line, ' ');
+ if (space) {
+ *space = 0;
+ }
+ printf("I don't know the word \"%s\".\n", line);
+ }
+
+ ++FrustrationLevel;
+
+ updateDiscordPresence();
+ }
+
+#ifdef DISCORD_DISABLE_IO_THREAD
+ Discord_UpdateConnection();
+#endif
+ Discord_RunCallbacks();
+ }
+}
+
+int main(int argc, char* argv[])
+{
+ discordInit();
+
+ gameLoop();
+
+ Discord_Shutdown();
+ return 0;
+}
diff --git a/externals/discord-rpc/examples/unrealstatus/.gitignore b/externals/discord-rpc/examples/unrealstatus/.gitignore
new file mode 100644
index 0000000000..bd472d50ae
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/.gitignore
@@ -0,0 +1,78 @@
+# Visual Studio 2015 user specific files
+.vs/
+
+# Visual Studio 2015 database file
+*.VC.db
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+*.ipa
+
+# These project files can be generated by the engine
+*.xcodeproj
+*.xcworkspace
+*.sln
+*.suo
+*.opensdf
+*.sdf
+*.VC.db
+*.VC.opendb
+
+# Precompiled Assets
+SourceArt/**/*.png
+SourceArt/**/*.tga
+
+# Binary Files
+Binaries/
+
+# Builds
+Build/*
+
+# Whitelist PakBlacklist-<BuildConfiguration>.txt files
+!Build/*/
+Build/*/**
+!Build/*/PakBlacklist*.txt
+
+# Don't ignore icon files in Build
+!Build/**/*.ico
+
+# Built data for maps
+*_BuiltData.uasset
+
+# Configuration files generated by the Editor
+Saved/*
+
+# Compiled source files for the engine to use
+Intermediate/
+
+# Cache files for the editor to use
+DerivedDataCache/
+
+# Library headers must be copied automatically by the build script (build.py unreal)
+Plugins/DiscordRpc/Source/ThirdParty/DiscordRpcLibrary/Include
diff --git a/externals/discord-rpc/examples/unrealstatus/Config/DefaultEditor.ini b/externals/discord-rpc/examples/unrealstatus/Config/DefaultEditor.ini
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Config/DefaultEditor.ini
diff --git a/externals/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini b/externals/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini
new file mode 100644
index 0000000000..84c38f3531
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Config/DefaultEngine.ini
@@ -0,0 +1,54 @@
+[URL]
+
+[/Script/HardwareTargeting.HardwareTargetingSettings]
+TargetedHardwareClass=Desktop
+AppliedTargetedHardwareClass=Desktop
+DefaultGraphicsPerformance=Maximum
+AppliedDefaultGraphicsPerformance=Maximum
+
+[/Script/Engine.EndUserSettings]
+bSendAnonymousUsageDataToEpic=False
+
+[/Script/Engine.PhysicsSettings]
+DefaultGravityZ=-980.000000
+DefaultTerminalVelocity=4000.000000
+DefaultFluidFriction=0.300000
+SimulateScratchMemorySize=262144
+RagdollAggregateThreshold=4
+TriangleMeshTriangleMinAreaThreshold=5.000000
+bEnableAsyncScene=False
+bEnableShapeSharing=False
+bEnablePCM=False
+bEnableStabilization=False
+bWarnMissingLocks=True
+bEnable2DPhysics=False
+LockedAxis=Invalid
+DefaultDegreesOfFreedom=Full3D
+BounceThresholdVelocity=200.000000
+FrictionCombineMode=Average
+RestitutionCombineMode=Average
+MaxAngularVelocity=3600.000000
+MaxDepenetrationVelocity=0.000000
+ContactOffsetMultiplier=0.010000
+MinContactOffset=0.000100
+MaxContactOffset=1.000000
+bSimulateSkeletalMeshOnDedicatedServer=True
+DefaultShapeComplexity=CTF_UseSimpleAndComplex
+bDefaultHasComplexCollision=True
+bSuppressFaceRemapTable=False
+bSupportUVFromHitResults=False
+bDisableActiveActors=False
+bDisableCCD=False
+MaxPhysicsDeltaTime=0.033333
+bSubstepping=False
+bSubsteppingAsync=False
+MaxSubstepDeltaTime=0.016667
+MaxSubsteps=6
+SyncSceneSmoothingFactor=0.000000
+AsyncSceneSmoothingFactor=0.990000
+InitialAverageFrameRate=0.016667
+
+[/Script/EngineSettings.GameMapsSettings]
+EditorStartupMap=/Game/ShowTheUILevel.ShowTheUILevel
+GameDefaultMap=/Game/ShowTheUILevel.ShowTheUILevel
+
diff --git a/externals/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini b/externals/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini
new file mode 100644
index 0000000000..7b5e2dc2f6
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Config/DefaultGame.ini
@@ -0,0 +1,7 @@
+[/Script/EngineSettings.GeneralProjectSettings]
+ProjectID=E5977A24492699DF20B8ADBF736AF6C6
+ProjectName=Discord RPC Example
+CompanyName=Discord Inc.
+Homepage="https://discordapp.com/"
+CopyrightNotice=
+
diff --git a/externals/discord-rpc/examples/unrealstatus/Content/MainScreenBP.uasset b/externals/discord-rpc/examples/unrealstatus/Content/MainScreenBP.uasset
new file mode 100644
index 0000000000..e903b53830
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Content/MainScreenBP.uasset
Binary files differ
diff --git a/externals/discord-rpc/examples/unrealstatus/Content/MouseGameModeBP.uasset b/externals/discord-rpc/examples/unrealstatus/Content/MouseGameModeBP.uasset
new file mode 100644
index 0000000000..410af19a9c
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Content/MouseGameModeBP.uasset
Binary files differ
diff --git a/externals/discord-rpc/examples/unrealstatus/Content/MousePlayerControllerBP.uasset b/externals/discord-rpc/examples/unrealstatus/Content/MousePlayerControllerBP.uasset
new file mode 100644
index 0000000000..0aaf50ba76
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Content/MousePlayerControllerBP.uasset
Binary files differ
diff --git a/externals/discord-rpc/examples/unrealstatus/Content/ShowTheUILevel.umap b/externals/discord-rpc/examples/unrealstatus/Content/ShowTheUILevel.umap
new file mode 100644
index 0000000000..bc0e5b7c48
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Content/ShowTheUILevel.umap
Binary files differ
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin
new file mode 100644
index 0000000000..309df129cf
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/DiscordRpc.uplugin
@@ -0,0 +1,29 @@
+{
+ "FileVersion": 3,
+ "Version": 1,
+ "VersionName": "1.0",
+ "FriendlyName": "Discord RPC",
+ "Description": "Wrap the Discord RPC library.",
+ "Category": "Messaging",
+ "CreatedBy": "Chris Marsh <chris@discordapp.com>",
+ "CreatedByURL": "https://discordapp.com/",
+ "DocsURL": "",
+ "MarketplaceURL": "",
+ "SupportURL": "",
+ "CanContainContent": true,
+ "IsBetaVersion": true,
+ "Installed": false,
+ "Modules": [
+ {
+ "Name": "DiscordRpc",
+ "Type": "Runtime",
+ "LoadingPhase": "PreDefault",
+ "WhitelistPlatforms" :
+ [
+ "Win64",
+ "Linux",
+ "Mac"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/Icon128.png b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/Icon128.png
new file mode 100644
index 0000000000..8b7f8e1c6a
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/Icon128.png
Binary files differ
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/discord.png b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/discord.png
new file mode 100644
index 0000000000..8b7f8e1c6a
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Resources/discord.png
Binary files differ
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs
new file mode 100644
index 0000000000..4b06325520
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/DiscordRpc.Build.cs
@@ -0,0 +1,57 @@
+// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
+
+using UnrealBuildTool;
+using System.IO;
+
+public class DiscordRpc : ModuleRules
+{
+#if WITH_FORWARDED_MODULE_RULES_CTOR
+ public DiscordRpc(ReadOnlyTargetRules Target) : base(Target)
+#else
+ public DiscordRpc(TargetInfo Target)
+#endif
+ {
+ Definitions.Add("DISCORD_DYNAMIC_LIB=1");
+
+ PublicIncludePaths.AddRange(
+ new string[] {
+ "DiscordRpc/Public"
+ }
+ );
+
+ PrivateIncludePaths.AddRange(
+ new string[] {
+ "DiscordRpc/Private"
+ }
+ );
+
+ PublicDependencyModuleNames.AddRange(
+ new string[]
+ {
+ "Core",
+ "DiscordRpcLibrary"
+ }
+ );
+
+ PrivateDependencyModuleNames.AddRange(
+ new string[]
+ {
+ "CoreUObject",
+ "Engine",
+ "Slate",
+ "SlateCore",
+ "Projects"
+ }
+ );
+
+ DynamicallyLoadedModuleNames.AddRange(
+ new string[]
+ {
+ // ... add any modules that your module loads dynamically here ...
+ }
+ );
+
+ 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/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp
new file mode 100644
index 0000000000..d539dab034
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpc.cpp
@@ -0,0 +1,76 @@
+// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
+
+#include "DiscordRpcPrivatePCH.h"
+#include "IPluginManager.h"
+#include "ModuleManager.h"
+
+#define LOCTEXT_NAMESPACE "FDiscordRpcModule"
+
+void FDiscordRpcModule::StartupModule()
+{
+#if !PLATFORM_LINUX
+#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("Source"), TEXT("ThirdParty"), TEXT("DiscordRpcLibrary"));
+#if PLATFORM_WINDOWS
+ const FString LibName = TEXT("discord-rpc");
+ const FString LibDir = FPaths::Combine(*SDKDir, TEXT("Win64"));
+ if (!LoadDependency(LibDir, LibName, DiscordRpcLibraryHandle)) {
+ FMessageDialog::Open(
+ EAppMsgType::Ok,
+ LOCTEXT(LOCTEXT_NAMESPACE,
+ "Failed to load DiscordRpc plugin. Plug-in will not be functional."));
+ FreeDependency(DiscordRpcLibraryHandle);
+ }
+#elif PLATFORM_MAC
+ const FString LibName = TEXT("libdiscord-rpc");
+ const FString LibDir = FPaths::Combine(*SDKDir, TEXT("Mac"));
+ if (!LoadDependency(LibDir, LibName, DiscordRpcLibraryHandle)) {
+ FMessageDialog::Open(
+ EAppMsgType::Ok,
+ LOCTEXT(LOCTEXT_NAMESPACE,
+ "Failed to load DiscordRpc plugin. Plug-in will not be functional."));
+ FreeDependency(DiscordRpcLibraryHandle);
+ }
+#endif
+#endif
+#endif
+}
+
+void FDiscordRpcModule::ShutdownModule()
+{
+ // Free the dll handle
+#if !PLATFORM_LINUX
+#if defined(DISCORD_DYNAMIC_LIB)
+ FreeDependency(DiscordRpcLibraryHandle);
+#endif
+#endif
+}
+
+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);
+
+ Handle = FPlatformProcess::GetDllHandle(*Path);
+
+ if (Handle == nullptr) {
+ return false;
+ }
+
+ return true;
+}
+
+void FDiscordRpcModule::FreeDependency(void*& Handle)
+{
+ if (Handle != nullptr) {
+ FPlatformProcess::FreeDllHandle(Handle);
+ Handle = nullptr;
+ }
+}
+
+#undef LOCTEXT_NAMESPACE
+
+IMPLEMENT_MODULE(FDiscordRpcModule, DiscordRpc) \ No newline at end of file
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp
new file mode 100644
index 0000000000..8925d8e41a
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp
@@ -0,0 +1,172 @@
+#include "DiscordRpcPrivatePCH.h"
+#include "DiscordRpcBlueprint.h"
+#include "discord_rpc.h"
+
+DEFINE_LOG_CATEGORY(Discord)
+
+static UDiscordRpc* self = nullptr;
+
+static void ReadyHandler(const DiscordUser* connectedUser)
+{
+ FDiscordUserData ud;
+ ud.userId = ANSI_TO_TCHAR(connectedUser->userId);
+ ud.username = ANSI_TO_TCHAR(connectedUser->username);
+ ud.discriminator = ANSI_TO_TCHAR(connectedUser->discriminator);
+ ud.avatar = ANSI_TO_TCHAR(connectedUser->avatar);
+ UE_LOG(Discord,
+ Log,
+ TEXT("Discord connected to %s - %s#%s"),
+ *ud.userId,
+ *ud.username,
+ *ud.discriminator);
+ if (self) {
+ self->IsConnected = true;
+ self->OnConnected.Broadcast(ud);
+ }
+}
+
+static void DisconnectHandler(int errorCode, const char* message)
+{
+ auto msg = FString(message);
+ UE_LOG(Discord, Log, TEXT("Discord disconnected (%d): %s"), errorCode, *msg);
+ if (self) {
+ self->IsConnected = false;
+ self->OnDisconnected.Broadcast(errorCode, msg);
+ }
+}
+
+static void ErroredHandler(int errorCode, const char* message)
+{
+ auto msg = FString(message);
+ UE_LOG(Discord, Log, TEXT("Discord error (%d): %s"), errorCode, *msg);
+ if (self) {
+ self->OnErrored.Broadcast(errorCode, msg);
+ }
+}
+
+static void JoinGameHandler(const char* joinSecret)
+{
+ auto secret = FString(joinSecret);
+ UE_LOG(Discord, Log, TEXT("Discord join %s"), *secret);
+ if (self) {
+ self->OnJoin.Broadcast(secret);
+ }
+}
+
+static void SpectateGameHandler(const char* spectateSecret)
+{
+ auto secret = FString(spectateSecret);
+ UE_LOG(Discord, Log, TEXT("Discord spectate %s"), *secret);
+ if (self) {
+ self->OnSpectate.Broadcast(secret);
+ }
+}
+
+static void JoinRequestHandler(const DiscordUser* request)
+{
+ FDiscordUserData ud;
+ ud.userId = ANSI_TO_TCHAR(request->userId);
+ ud.username = ANSI_TO_TCHAR(request->username);
+ ud.discriminator = ANSI_TO_TCHAR(request->discriminator);
+ ud.avatar = ANSI_TO_TCHAR(request->avatar);
+ UE_LOG(Discord,
+ Log,
+ TEXT("Discord join request from %s - %s#%s"),
+ *ud.userId,
+ *ud.username,
+ *ud.discriminator);
+ if (self) {
+ self->OnJoinRequest.Broadcast(ud);
+ }
+}
+
+void UDiscordRpc::Initialize(const FString& applicationId,
+ bool autoRegister,
+ const FString& optionalSteamId)
+{
+ self = this;
+ IsConnected = false;
+ DiscordEventHandlers handlers{};
+ handlers.ready = ReadyHandler;
+ handlers.disconnected = DisconnectHandler;
+ handlers.errored = ErroredHandler;
+ if (OnJoin.IsBound()) {
+ handlers.joinGame = JoinGameHandler;
+ }
+ if (OnSpectate.IsBound()) {
+ handlers.spectateGame = SpectateGameHandler;
+ }
+ if (OnJoinRequest.IsBound()) {
+ handlers.joinRequest = JoinRequestHandler;
+ }
+ auto appId = StringCast<ANSICHAR>(*applicationId);
+ auto steamId = StringCast<ANSICHAR>(*optionalSteamId);
+ Discord_Initialize(
+ (const char*)appId.Get(), &handlers, autoRegister, (const char*)steamId.Get());
+}
+
+void UDiscordRpc::Shutdown()
+{
+ Discord_Shutdown();
+ self = nullptr;
+}
+
+void UDiscordRpc::RunCallbacks()
+{
+ Discord_RunCallbacks();
+}
+
+void UDiscordRpc::UpdatePresence()
+{
+ DiscordRichPresence rp{};
+
+ auto state = StringCast<ANSICHAR>(*RichPresence.state);
+ rp.state = state.Get();
+
+ auto details = StringCast<ANSICHAR>(*RichPresence.details);
+ rp.details = details.Get();
+
+ auto largeImageKey = StringCast<ANSICHAR>(*RichPresence.largeImageKey);
+ rp.largeImageKey = largeImageKey.Get();
+
+ auto largeImageText = StringCast<ANSICHAR>(*RichPresence.largeImageText);
+ rp.largeImageText = largeImageText.Get();
+
+ auto smallImageKey = StringCast<ANSICHAR>(*RichPresence.smallImageKey);
+ rp.smallImageKey = smallImageKey.Get();
+
+ auto smallImageText = StringCast<ANSICHAR>(*RichPresence.smallImageText);
+ rp.smallImageText = smallImageText.Get();
+
+ auto partyId = StringCast<ANSICHAR>(*RichPresence.partyId);
+ rp.partyId = partyId.Get();
+
+ auto matchSecret = StringCast<ANSICHAR>(*RichPresence.matchSecret);
+ rp.matchSecret = matchSecret.Get();
+
+ auto joinSecret = StringCast<ANSICHAR>(*RichPresence.joinSecret);
+ rp.joinSecret = joinSecret.Get();
+
+ auto spectateSecret = StringCast<ANSICHAR>(*RichPresence.spectateSecret);
+ rp.spectateSecret = spectateSecret.Get();
+ rp.startTimestamp = RichPresence.startTimestamp;
+ rp.endTimestamp = RichPresence.endTimestamp;
+ rp.partySize = RichPresence.partySize;
+ rp.partyMax = RichPresence.partyMax;
+ rp.partyPrivacy = (int)RichPresence.partyPrivacy;
+ rp.instance = RichPresence.instance;
+
+ Discord_UpdatePresence(&rp);
+}
+
+void UDiscordRpc::ClearPresence()
+{
+ Discord_ClearPresence();
+}
+
+void UDiscordRpc::Respond(const FString& userId, int reply)
+{
+ UE_LOG(Discord, Log, TEXT("Responding %d to join request from %s"), reply, *userId);
+ FTCHARToUTF8 utf8_userid(*userId);
+ Discord_Respond(utf8_userid.Get(), reply);
+}
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h
new file mode 100644
index 0000000000..0c66aba443
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcPrivatePCH.h
@@ -0,0 +1,2 @@
+#include "Core.h"
+#include "DiscordRpc.h" \ No newline at end of file
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h
new file mode 100644
index 0000000000..727833b091
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpc.h
@@ -0,0 +1,20 @@
+// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "ModuleManager.h"
+
+class FDiscordRpcModule : public IModuleInterface {
+public:
+ /** IModuleInterface implementation */
+ virtual void StartupModule() override;
+ virtual void ShutdownModule() override;
+
+private:
+ /** Handle to the test dll we will load */
+ 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);
+ static void FreeDependency(void*& Handle);
+}; \ No newline at end of file
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h
new file mode 100644
index 0000000000..409eee0d9d
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h
@@ -0,0 +1,181 @@
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Engine.h"
+#include "DiscordRpcBlueprint.generated.h"
+
+// unreal's header tool hates clang-format
+// clang-format off
+
+/**
+* Ask to join callback data
+*/
+USTRUCT(BlueprintType)
+struct FDiscordUserData {
+ GENERATED_USTRUCT_BODY()
+
+ UPROPERTY(BlueprintReadOnly)
+ FString userId;
+ UPROPERTY(BlueprintReadOnly)
+ FString username;
+ UPROPERTY(BlueprintReadOnly)
+ FString discriminator;
+ UPROPERTY(BlueprintReadOnly)
+ FString avatar;
+};
+
+/**
+* Valid response codes for Respond function
+*/
+UENUM(BlueprintType)
+enum class EDiscordJoinResponseCodes : uint8
+{
+ DISCORD_REPLY_NO UMETA(DisplayName="No"),
+ DISCORD_REPLY_YES UMETA(DisplayName="Yes"),
+ DISCORD_REPLY_IGNORE UMETA(DisplayName="Ignore")
+};
+
+/**
+* Valid party privacy values
+*/
+UENUM(BlueprintType)
+enum class EDiscordPartyPrivacy: uint8
+{
+ DISCORD_PARTY_PRIVATE UMETA(DisplayName="Private"),
+ DISCORD_PARTY_PUBLIC UMETA(DisplayName="Public")
+};
+
+DECLARE_LOG_CATEGORY_EXTERN(Discord, Log, All);
+
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordConnected, const FDiscordUserData&, joinRequest);
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordDisconnected, int, errorCode, const FString&, errorMessage);
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FDiscordErrored, int, errorCode, const FString&, errorMessage);
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoin, const FString&, joinSecret);
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordSpectate, const FString&, spectateSecret);
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDiscordJoinRequest, const FDiscordUserData&, joinRequest);
+
+// clang-format on
+
+/**
+ * Rich presence data
+ */
+USTRUCT(BlueprintType)
+struct FDiscordRichPresence {
+ GENERATED_USTRUCT_BODY()
+
+ UPROPERTY(BlueprintReadWrite)
+ FString state;
+ UPROPERTY(BlueprintReadWrite)
+ FString details;
+ // todo, timestamps are 64bit, does that even matter?
+ UPROPERTY(BlueprintReadWrite)
+ int startTimestamp;
+ UPROPERTY(BlueprintReadWrite)
+ int endTimestamp;
+ UPROPERTY(BlueprintReadWrite)
+ FString largeImageKey;
+ UPROPERTY(BlueprintReadWrite)
+ FString largeImageText;
+ UPROPERTY(BlueprintReadWrite)
+ FString smallImageKey;
+ UPROPERTY(BlueprintReadWrite)
+ FString smallImageText;
+ UPROPERTY(BlueprintReadWrite)
+ FString partyId;
+ UPROPERTY(BlueprintReadWrite)
+ int partySize;
+ UPROPERTY(BlueprintReadWrite)
+ int partyMax;
+ UPROPERTY(BlueprintReadWrite)
+ EDiscordPartyPrivacy partyPrivacy;
+ UPROPERTY(BlueprintReadWrite)
+ FString matchSecret;
+ UPROPERTY(BlueprintReadWrite)
+ FString joinSecret;
+ UPROPERTY(BlueprintReadWrite)
+ FString spectateSecret;
+ UPROPERTY(BlueprintReadWrite)
+ bool instance;
+};
+
+/**
+ *
+ */
+UCLASS(BlueprintType, meta = (DisplayName = "Discord RPC"), Category = "Discord")
+class DISCORDRPC_API UDiscordRpc : public UObject {
+ GENERATED_BODY()
+
+public:
+ UFUNCTION(BlueprintCallable,
+ meta = (DisplayName = "Initialize connection", Keywords = "Discord rpc"),
+ Category = "Discord")
+ void Initialize(const FString& applicationId,
+ bool autoRegister,
+ const FString& optionalSteamId);
+
+ UFUNCTION(BlueprintCallable,
+ meta = (DisplayName = "Shut down connection", Keywords = "Discord rpc"),
+ Category = "Discord")
+ void Shutdown();
+
+ UFUNCTION(BlueprintCallable,
+ meta = (DisplayName = "Check for callbacks", Keywords = "Discord rpc"),
+ Category = "Discord")
+ void RunCallbacks();
+
+ UFUNCTION(BlueprintCallable,
+ meta = (DisplayName = "Send presence", Keywords = "Discord rpc"),
+ Category = "Discord")
+ void UpdatePresence();
+
+ UFUNCTION(BlueprintCallable,
+ meta = (DisplayName = "Clear presence", Keywords = "Discord rpc"),
+ Category = "Discord")
+ void ClearPresence();
+
+ UFUNCTION(BlueprintCallable,
+ meta = (DisplayName = "Respond to join request", Keywords = "Discord rpc"),
+ Category = "Discord")
+ void Respond(const FString& userId, int reply);
+
+ UPROPERTY(BlueprintReadOnly,
+ meta = (DisplayName = "Is Discord connected", Keywords = "Discord rpc"),
+ Category = "Discord")
+ bool IsConnected;
+
+ UPROPERTY(BlueprintAssignable,
+ meta = (DisplayName = "On connection", Keywords = "Discord rpc"),
+ Category = "Discord")
+ FDiscordConnected OnConnected;
+
+ UPROPERTY(BlueprintAssignable,
+ meta = (DisplayName = "On disconnection", Keywords = "Discord rpc"),
+ Category = "Discord")
+ FDiscordDisconnected OnDisconnected;
+
+ UPROPERTY(BlueprintAssignable,
+ meta = (DisplayName = "On error message", Keywords = "Discord rpc"),
+ Category = "Discord")
+ FDiscordErrored OnErrored;
+
+ UPROPERTY(BlueprintAssignable,
+ meta = (DisplayName = "When Discord user presses join", Keywords = "Discord rpc"),
+ Category = "Discord")
+ FDiscordJoin OnJoin;
+
+ UPROPERTY(BlueprintAssignable,
+ meta = (DisplayName = "When Discord user presses spectate", Keywords = "Discord rpc"),
+ Category = "Discord")
+ FDiscordSpectate OnSpectate;
+
+ UPROPERTY(BlueprintAssignable,
+ meta = (DisplayName = "When Discord another user sends a join request",
+ Keywords = "Discord rpc"),
+ Category = "Discord")
+ FDiscordJoinRequest OnJoinRequest;
+
+ UPROPERTY(BlueprintReadWrite,
+ meta = (DisplayName = "Rich presence info", Keywords = "Discord rpc"),
+ Category = "Discord")
+ FDiscordRichPresence RichPresence;
+};
diff --git a/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs
new file mode 100644
index 0000000000..ba8d83499f
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Plugins/discordrpc/Source/ThirdParty/DiscordRpcLibrary/DiscordRpcLibrary.Build.cs
@@ -0,0 +1,59 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using System.IO;
+using UnrealBuildTool;
+
+public class DiscordRpcLibrary : ModuleRules
+{
+#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", "DiscordRpcLibrary"));
+
+ if (Target.Platform == UnrealTargetPlatform.Win64)
+ {
+ string lib = Path.Combine(BaseDirectory, "Win64");
+
+ // Include headers
+ PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include"));
+
+ // Add the import library
+ PublicLibraryPaths.Add(lib);
+ PublicAdditionalLibraries.Add(Path.Combine(lib, "discord-rpc.lib"));
+
+ // Dynamic
+ RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(lib, "discord-rpc.dll")));
+ PublicDelayLoadDLLs.Add("discord-rpc.dll");
+ }
+ else if (Target.Platform == UnrealTargetPlatform.Linux)
+ {
+ string lib = Path.Combine(BaseDirectory, "Linux", "x86_64-unknown-linux-gnu");
+
+ // Include headers
+ PublicIncludePaths.Add(Path.Combine(BaseDirectory, "Include"));
+
+ // Add the import library
+ PublicLibraryPaths.Add(lib);
+ 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/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs
new file mode 100644
index 0000000000..0c7c3c8889
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus.Target.cs
@@ -0,0 +1,14 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class unrealstatusTarget : TargetRules
+{
+ public unrealstatusTarget(TargetInfo Target) : base(Target)
+ {
+ Type = TargetType.Game;
+
+ ExtraModuleNames.AddRange( new string[] { "unrealstatus" } );
+ }
+}
diff --git a/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs
new file mode 100644
index 0000000000..9560370eb0
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.Build.cs
@@ -0,0 +1,23 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+
+public class unrealstatus : ModuleRules
+{
+ public unrealstatus(ReadOnlyTargetRules Target) : base(Target)
+ {
+ PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
+
+ PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
+
+ PrivateDependencyModuleNames.AddRange(new string[] { });
+
+ // Uncomment if you are using Slate UI
+ // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
+
+ // Uncomment if you are using online features
+ // PrivateDependencyModuleNames.Add("OnlineSubsystem");
+
+ // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
+ }
+}
diff --git a/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp
new file mode 100644
index 0000000000..9dd5388652
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.cpp
@@ -0,0 +1,6 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#include "unrealstatus.h"
+#include "Modules/ModuleManager.h"
+
+IMPLEMENT_PRIMARY_GAME_MODULE(FDefaultGameModuleImpl, unrealstatus, "unrealstatus");
diff --git a/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h
new file mode 100644
index 0000000000..73407dd15a
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatus.h
@@ -0,0 +1,5 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
diff --git a/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp
new file mode 100644
index 0000000000..1af30948cd
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.cpp
@@ -0,0 +1,3 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#include "unrealstatusGameModeBase.h"
diff --git a/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h
new file mode 100644
index 0000000000..8dd9bd4740
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatus/unrealstatusGameModeBase.h
@@ -0,0 +1,15 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/GameModeBase.h"
+#include "unrealstatusGameModeBase.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class UNREALSTATUS_API AunrealstatusGameModeBase : public AGameModeBase {
+ GENERATED_BODY()
+};
diff --git a/externals/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs
new file mode 100644
index 0000000000..2e8ad02286
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/Source/unrealstatusEditor.Target.cs
@@ -0,0 +1,14 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class unrealstatusEditorTarget : TargetRules
+{
+ public unrealstatusEditorTarget(TargetInfo Target) : base(Target)
+ {
+ Type = TargetType.Editor;
+
+ ExtraModuleNames.AddRange( new string[] { "unrealstatus" } );
+ }
+}
diff --git a/externals/discord-rpc/examples/unrealstatus/unrealstatus.uproject b/externals/discord-rpc/examples/unrealstatus/unrealstatus.uproject
new file mode 100644
index 0000000000..8a4a40b4e2
--- /dev/null
+++ b/externals/discord-rpc/examples/unrealstatus/unrealstatus.uproject
@@ -0,0 +1,19 @@
+{
+ "FileVersion": 3,
+ "EngineAssociation": "4.18",
+ "Category": "",
+ "Description": "",
+ "Modules": [
+ {
+ "Name": "unrealstatus",
+ "Type": "Runtime",
+ "LoadingPhase": "Default"
+ }
+ ],
+ "TargetPlatforms": [
+ "LinuxNoEditor",
+ "MacNoEditor",
+ "WindowsNoEditor",
+ "AllDesktop"
+ ]
+} \ No newline at end of file