internal static void InternalDiscordInitialize() { if (IsConnected) { return; } _handlers = new DiscordRpc.EventHandlers(); Debug.Log("Discord: init"); DiscordRpc.Initialize(ApplicationId, ref _handlers, true, OptionalSteamId); IsConnected = true; JEMDiscordUnityPresence.RefreshPresence(); }
private void OnGUI() { var cfg = JEMDiscordConfiguration.Loaded; GUILayout.Label("Settings", EditorStyles.boldLabel); cfg.Enable = EditorGUILayout.Toggle("Enable RPC", cfg.Enable); cfg.ShowPresenceOnlyWhenActive = EditorGUILayout.Toggle("Show only when window focused", cfg.ShowPresenceOnlyWhenActive); cfg.RecompileTimeout = EditorGUILayout.IntSlider("Recompile Timeout", cfg.RecompileTimeout, 10, 360); EditorGUILayout.Space(); GUI.enabled = false; GUILayout.Label("Presence Status", EditorStyles.boldLabel); EditorGUILayout.LabelField("HasPresence", JEMDiscordController.HasPresence.ToString()); if (!JEMDiscordController.IsConnected) { var diff = DateTime.Now - JEMDiscordController._lastInitializationTime; EditorGUILayout.LabelField("Will connect in", $"{cfg.RecompileTimeout - diff.Seconds:0.00}"); } else { EditorGUILayout.LabelField("Connected"); } EditorGUILayout.LabelField("_drawState", JEMDiscordUnityPresence._drawState.ToString()); EditorGUILayout.LabelField("_sceneName", JEMDiscordUnityPresence._sceneName); EditorGUILayout.LabelField("_inPlayMode", JEMDiscordUnityPresence._inPlayMode.ToString()); GUI.enabled = true; GUILayout.FlexibleSpace(); if (GUILayout.Button("Save Configuration")) { JEMDiscordConfiguration.SaveConfiguration(); } if (GUILayout.Button("Refresh Presence")) { JEMDiscordUnityPresence.RefreshPresence(); } if (GUILayout.Button("Clear Presence")) { JEMDiscordUnityPresence.RefreshPresence(true); } }
private static void Update() { if (!IsInitialized) { return; } if (!IsConnected) { // While discord is not yet connected, we will try again after one min. if (CanInitialize()) { InternalDiscordInitialize(); } return; } // Hide unity presence if not focused. // TODO: Adjust timestamp after receiving focus again if (_wasWindowFocused == InternalEditorUtility.isApplicationActive) { return; } _wasWindowFocused = InternalEditorUtility.isApplicationActive; if (!JEMDiscordConfiguration.Resolve().ShowPresenceOnlyWhenActive) { return; } if (_wasWindowFocused) { JEMDiscordUnityPresence.RefreshPresence(); } else { JEMDiscordUnityPresence.RefreshPresence(true); } }