From 62e21d54fb1569ff9b42007f444e3204fa7e7d15 Mon Sep 17 00:00:00 2001 From: Natsumi Date: Tue, 20 Jan 2026 12:18:20 +1300 Subject: [PATCH] Always run overlay when running VRCX in debug mode --- Dotnet/Overlay/Cef/OverlayClient.cs | 4 +++- Dotnet/Overlay/Cef/OverlayProgram.cs | 4 +++- Dotnet/OverlayWebSocket/OverlayServer.cs | 24 ++++++++++++------------ src/stores/sharedFeed.js | 3 ++- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Dotnet/Overlay/Cef/OverlayClient.cs b/Dotnet/Overlay/Cef/OverlayClient.cs index 19ab28b4..64126348 100644 --- a/Dotnet/Overlay/Cef/OverlayClient.cs +++ b/Dotnet/Overlay/Cef/OverlayClient.cs @@ -17,8 +17,10 @@ public static class OverlayClient private static readonly Uri WebsocketUri = new("ws://127.0.0.1:34582"); private static WebsocketClient? _websocketClient; + public static bool Connected => + _websocketClient != null && _websocketClient.IsRunning; public static bool ConnectedAndActive => - _websocketClient != null && _websocketClient.IsRunning && + Connected && OverlayProgram.VRCXVRInstance.IsActive(); public static async Task Init() diff --git a/Dotnet/Overlay/Cef/OverlayProgram.cs b/Dotnet/Overlay/Cef/OverlayProgram.cs index 5f88b72c..079502e2 100644 --- a/Dotnet/Overlay/Cef/OverlayProgram.cs +++ b/Dotnet/Overlay/Cef/OverlayProgram.cs @@ -42,7 +42,9 @@ internal static class OverlayProgram private static async Task QuitProcess() { await Task.Delay(5000); - while (OverlayClient.ConnectedAndActive) + while (Program.LaunchDebug ? + OverlayClient.Connected : + OverlayClient.ConnectedAndActive) { await Task.Delay(500); } diff --git a/Dotnet/OverlayWebSocket/OverlayServer.cs b/Dotnet/OverlayWebSocket/OverlayServer.cs index 642a24d2..08aa4f82 100644 --- a/Dotnet/OverlayWebSocket/OverlayServer.cs +++ b/Dotnet/OverlayWebSocket/OverlayServer.cs @@ -16,20 +16,20 @@ namespace VRCX; public class OverlayServer { public static OverlayServer Instance { get; private set; } - + private static readonly Logger logger = LogManager.GetCurrentClassLogger(); - + private static readonly Lock SendLock = new(); private static readonly ConcurrentDictionary ConnectedWebSockets = new(); private static CancellationTokenSource _cancellationToken; - + private static OverlayVars _overlayVars; static OverlayServer() { Instance = new OverlayServer(); } - + public async Task Init() { if (_cancellationToken != null && _cancellationToken.IsCancellationRequested) @@ -66,7 +66,7 @@ public class OverlayServer { if (_cancellationToken == null || _cancellationToken.IsCancellationRequested) return; - + foreach (var webSocket in ConnectedWebSockets.Keys) { if (webSocket == null || webSocket.State != WebSocketState.Open) @@ -90,7 +90,7 @@ public class OverlayServer { WebSocketContext webSocketContext; try - { + { webSocketContext = await listenerContext.AcceptWebSocketAsync(null); } catch (Exception e) @@ -100,7 +100,7 @@ public class OverlayServer logger.Error(e); return; } - + var webSocket = webSocketContext.WebSocket; try { @@ -117,7 +117,7 @@ public class OverlayServer var message = JsonSerializer.Deserialize(text); HandleMessage(message); continue; - + case WebSocketMessageType.Close: await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None); break; @@ -157,7 +157,7 @@ public class OverlayServer MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame) MainForm.Instance.Browser.ExecuteScriptAsync("window?.$pinia?.vr.vrInit();"); break; - + case OverlayMessageType.IsHmdAfk: var isHmdAfk = string.Equals(message.Data, "true", StringComparison.OrdinalIgnoreCase); if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame) @@ -170,7 +170,7 @@ public class OverlayServer throw new ArgumentOutOfRangeException(); } } - + public void SendMessage(OverlayMessage message) { lock (SendLock) @@ -191,12 +191,12 @@ public class OverlayServer public void UpdateVars(OverlayVars overlayVars) { _overlayVars = overlayVars; - if (!IsConnected() && overlayVars.Active) + if (!IsConnected() && (overlayVars.Active || Program.LaunchDebug)) { OverlayManager.StartOverlay(); return; } - + var helloMessage = new OverlayMessage { Type = OverlayMessageType.UpdateVars, diff --git a/src/stores/sharedFeed.js b/src/stores/sharedFeed.js index 70cb5ad5..3f2d78c8 100644 --- a/src/stores/sharedFeed.js +++ b/src/stores/sharedFeed.js @@ -418,6 +418,7 @@ export const useSharedFeedStore = defineStore('SharedFeed', () => { loadSharedFeed, sendSharedFeed, addEntry, - addTag + addTag, + sharedFeedData }; });