using System; using System.Collections.Generic; using System.Globalization; using System.IO; using CefSharp; namespace VRCX { public class AppApiVrCef : AppApiVr { static AppApiVrCef() { Instance = new AppApiVrCef(); } public override void Init() { // Create Instance before Cef tries to bind it } public override void VrInit() { if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame) MainForm.Instance.Browser.ExecuteScriptAsync("window?.$pinia?.vr.vrInit"); } public override void ToggleSystemMonitor(bool enabled) { SystemMonitorCef.Instance.Start(enabled); } /// /// Returns the current CPU usage as a percentage. /// /// The current CPU usage as a percentage. public override float CpuUsage() { return SystemMonitorCef.Instance.CpuUsage; } /// /// Returns an array of arrays containing information about the connected VR devices. /// Each sub-array contains the type of device and its current state /// /// An array of arrays containing information about the connected VR devices. public override string[][] GetVRDevices() { return Program.VRCXVRInstance.GetDevices(); } /// /// Returns the number of milliseconds that the system has been running. /// /// The number of milliseconds that the system has been running. public override double GetUptime() { return SystemMonitorCef.Instance.UpTime; } /// /// Returns the current language of the operating system. /// /// The current language of the operating system. public override string CurrentCulture() { return CultureInfo.CurrentCulture.ToString(); } public override string CustomVrScript() { var filePath = Path.Join(Program.AppDataDirectory, "customvr.js"); if (File.Exists(filePath)) return File.ReadAllText(filePath); return string.Empty; } public override List> GetExecuteVrFeedFunctionQueue() { throw new NotImplementedException("GetExecuteVrFeedFunctionQueue is not implemented in AppApiVrCef."); } public override List> GetExecuteVrOverlayFunctionQueue() { throw new NotImplementedException("GetExecuteVrOverlayFunctionQueue is not implemented in AppApiVrCef."); } } }