Always run overlay when running VRCX in debug mode

This commit is contained in:
Natsumi
2026-01-20 12:18:20 +13:00
parent cf43938fd3
commit 62e21d54fb
4 changed files with 20 additions and 15 deletions

View File

@@ -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()

View File

@@ -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);
}

View File

@@ -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<WebSocket, byte> 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<OverlayMessage>(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,

View File

@@ -418,6 +418,7 @@ export const useSharedFeedStore = defineStore('SharedFeed', () => {
loadSharedFeed,
sendSharedFeed,
addEntry,
addTag
addTag,
sharedFeedData
};
});