public OpenVRContext(VRContextOptions options) { _options = options; EVRInitError initError = EVRInitError.None; _vrSystem = OVR.Init(ref initError, EVRApplicationType.VRApplication_Scene); if (initError != EVRInitError.None) { throw new Exception($"Failed to initialize OpenVR: {OVR.GetStringForHmdError(initError)}"); } _compositor = OVR.Compositor; if (_compositor == null) { throw new Exception("Failed to access the OpenVR Compositor."); } }
public static object CallSystemFn(SystemFn fn, params object[] args) { bool initOpenVR = (!SteamVR.active && !SteamVR.usingNativeSupport); if (initOpenVR) { EVRInitError error = EVRInitError.None; OpenVR.Init(ref error, EVRApplicationType.VRApplication_Utility); } CVRSystem system = OpenVR.System; object result = (system != null) ? fn(system, args) : null; if (initOpenVR) { OpenVR.Shutdown(); } return(result); }
/// <summary> /// Configures the specified windows handler. /// </summary> /// <param name="windowsHandler">The windows handler.</param> public override void Configure(IntPtr windowsHandler) { base.Configure(windowsHandler); this.LoadNativeLibrary(); var error = EVRInitError.None; this.HmdDetected = true; this.Hmd = ValveOpenVR.Init(ref error, this.OpenVRApplicationType); if (error != EVRInitError.None) { OpenVRHelper.ReportInitError(error); this.Hmd = null; this.HmdDetected = false; } // Verify common interfaces are valid. ValveOpenVR.GetGenericInterface(ValveOpenVR.IVRCompositor_Version, ref error); if (error != EVRInitError.None) { OpenVRHelper.ReportInitError(error); this.HmdDetected = false; } ValveOpenVR.GetGenericInterface(ValveOpenVR.IVROverlay_Version, ref error); if (error != EVRInitError.None) { OpenVRHelper.ReportInitError(error); this.HmdDetected = false; } if (this.Hmd == null) { ValveOpenVR.Shutdown(); return; } }
public static bool InitializeTemporarySession(bool initInput = false) { if (Application.isEditor) { //bool needsInit = (!active && !usingNativeSupport && !runningTemporarySession); EVRInitError initError = EVRInitError.None; OpenVR.GetGenericInterface(OpenVR.IVRCompositor_Version, ref initError); bool needsInit = initError != EVRInitError.None; if (needsInit) { EVRInitError error = EVRInitError.None; OpenVR.Init(ref error, EVRApplicationType.VRApplication_Overlay); if (error != EVRInitError.None) { //Debug.LogError("<b>[SteamVR]</b> Error during OpenVR Init: " + error.ToString()); return(false); } IdentifyEditorApplication(false); SteamVR_Input.IdentifyActionsFile(false); runningTemporarySession = true; } if (initInput) { SteamVR_Input.Initialize(true); } return(needsInit); } return(false); }
private static SteamVR CreateInstance() { SteamVR.initializedState = SteamVR.InitializedStates.Initializing; try { EVRInitError evrinitError = EVRInitError.None; OpenVR.GetGenericInterface("IVRCompositor_022", ref evrinitError); OpenVR.Init(ref evrinitError, EVRApplicationType.VRApplication_Scene, ""); CVRSystem system = OpenVR.System; string manifestFile = SteamVR.GetManifestFile(); EVRApplicationError evrapplicationError = OpenVR.Applications.AddApplicationManifest(manifestFile, true); if (evrapplicationError != EVRApplicationError.None) { UnityEngine.Debug.LogError("<b>[SteamVR_Standalone]</b> Error adding vr manifest file: " + evrapplicationError.ToString()); } int id = Process.GetCurrentProcess().Id; OpenVR.Applications.IdentifyApplication((uint)id, SteamVR_Settings.instance.editorAppKey); UnityEngine.Debug.Log("Is HMD here? " + OpenVR.IsHmdPresent().ToString()); if (evrinitError != EVRInitError.None) { SteamVR.initializedState = SteamVR.InitializedStates.InitializeFailure; SteamVR.ReportError(evrinitError); SteamVR.ReportGeneralErrors(); SteamVR_Events.Initializing.Send(false); return(null); } OpenVR.GetGenericInterface("IVROverlay_021", ref evrinitError); if (evrinitError != EVRInitError.None) { SteamVR.initializedState = SteamVR.InitializedStates.InitializeFailure; SteamVR.ReportError(evrinitError); SteamVR_Events.Initializing.Send(false); return(null); } OpenVR.GetGenericInterface("IVRInput_007", ref evrinitError); if (evrinitError != EVRInitError.None) { SteamVR.initializedState = SteamVR.InitializedStates.InitializeFailure; SteamVR.ReportError(evrinitError); SteamVR_Events.Initializing.Send(false); return(null); } SteamVR.settings = SteamVR_Settings.instance; if (Application.isEditor) { SteamVR.IdentifyEditorApplication(true); } SteamVR_Input.IdentifyActionsFile(true); if (SteamVR_Settings.instance.inputUpdateMode != SteamVR_UpdateModes.Nothing || SteamVR_Settings.instance.poseUpdateMode != SteamVR_UpdateModes.Nothing) { SteamVR_Input.Initialize(false); } } catch (Exception arg) { UnityEngine.Debug.LogError("<b>[SteamVR_Standalone]</b> " + arg); SteamVR_Events.Initializing.Send(false); return(null); } SteamVR._enabled = true; SteamVR.initializedState = SteamVR.InitializedStates.InitializeSuccess; SteamVR_Events.Initializing.Send(true); return(new SteamVR()); }