public static void Main(string[] args) { m_mutex = new Mutex(true, AppName, out bool createdNew); if (!createdNew) { Console.WriteLine(AppName + " is already running! Exiting the application."); Console.ReadKey(); return; } InitLogs(); NexHudSettings.load(); NexHudEngine.Log("NexHud Version: " + Version); NexHudEngineMode _requestedMode = NexHudSettings.GetInstance().nexHudMode; foreach (string a in args) { if (a == ArgAuto) { _requestedMode = NexHudEngineMode.Auto; } else if (a == ArgDebug) { _requestedMode = NexHudEngineMode.WindowDebug; } else if (a == ArgVr) { _requestedMode = NexHudEngineMode.Vr; } else if (a == ArgClassic) { _requestedMode = NexHudEngineMode.WindowOverlay; } } NexHudEngine.Log("Engine mode Requested: " + _requestedMode); //performTests(); InitEliteApi(); InitEngine(_requestedMode); NexHudEngine.Log("Engine mode: " + _requestedMode); LoadConfigs(); if (NexHudEngine.engineMode == NexHudEngineMode.Vr) { InitVrConsole(); } new NxMenu(); try { NexHudEngine.Run(); // Runs update/draw calls for all active overlays. And yes, it's blocking. } catch (Exception ex) { NexHudEngine.Log(NxLog.Type.Fatal, ex.Message); NexHudEngine.Log(NxLog.Type.Fatal, ex.Source); NexHudEngine.Log(NxLog.Type.Fatal, ex.StackTrace); } }