protected override void Render() { base.Render(); if (this.IsConnected && this.HmdDetected) { if (this.msaaSampleCount > 1) { var rtManager = this.adapter.Graphics.RenderTargetManager as RenderTargetManager; var dxRt = rtManager.TargetFromHandle <DXRenderTarget>(this.msaaRenderTarget.TextureHandle); var dxSwapRt = rtManager.TargetFromHandle <DXRenderTarget>(this.swapRenderTarget.TextureHandle); this.context.ResolveSubresource(dxRt.Target, 0, dxSwapRt.Target, 0, Format.R8G8B8A8_UNorm); } EVRCompositorError errorResult; errorResult = ValveOpenVR.Compositor.Submit(EVREye.Eye_Left, ref this.swapTexture, ref this.leftEyeTextureBounds, EVRSubmitFlags.Submit_Default); OpenVRHelper.ReportCompositeError(errorResult); errorResult = ValveOpenVR.Compositor.Submit(EVREye.Eye_Right, ref this.swapTexture, ref this.rightEyeTextureBounds, EVRSubmitFlags.Submit_Default); OpenVRHelper.ReportCompositeError(errorResult); if (this.ShowHMDMirrorTexture) { this.RenderMirrorTexture(); } } }
public override void Update(TimeSpan gameTime) { if (this.IsConnected) { if (ValveOpenVR.Compositor != null) { var errorResult = ValveOpenVR.Compositor.WaitGetPoses(this.renderPoses, this.gamePoses); OpenVRHelper.ReportCompositeError(errorResult); } else { this.ovrApplication.Hmd.GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin.TrackingUniverseStanding, 0, this.renderPoses); } this.UpdateHMD(); this.UpdateDevices(); this.UpdateControllers(); ////else ////{ //// var hmd = this.ovrApplication.Hmd; //// hmd.GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin.TrackingUniverseStanding, 0, this.renderPoses); ////} } }
private void AppCoreSceneContext_PostInstall() { DiContainer container = _appCoreSceneContext.Container; IVRPlatformHelper vrPlatformHelper = container.Resolve <IVRPlatformHelper>(); if (vrPlatformHelper is OpenVRHelper openVRHelper) { _openVRHelper = openVRHelper; } else { _logger.Error($"{nameof(IVRPlatformHelper)} isn't an instance of {nameof(OpenVRHelper)}; are you using SteamVR?"); } }
public static bool Prefix(XRNode node, Transform transform, Vector3 addPosition, Vector3 addRotation, VRPlatformHelper __instance) { if (__instance.vrPlatformSDK != VRPlatformHelper.VRPlatformSDK.OpenVR) { return(true); } OpenVRHelper openVRHelper = Traverse.Create(__instance).Field("_openVRHeper").GetValue <OpenVRHelper>(); if (openVRHelper.vrControllerManufacturerName != OpenVRHelper.VRControllerManufacturerName.Valve) { return(true); } transform.Rotate(new Vector3(15f, 0f, 0f) + addRotation); transform.Translate(new Vector3(0f, -0.03f, 0f) + addPosition); return(false); }
public static bool Prefix(OpenVRHelper __instance) { Vector2 vector = Plugin.thumbstick.vector; if (vector.sqrMagnitude <= 0.01f) { if (_scrollingLastFrame) { _scrollingLastFrame = false; InvokeEvent(__instance, _joystickWasCenteredThisFrameEvent); } } else { _scrollingLastFrame = true; InvokeEvent(__instance, _joystickWasNotCenteredThisFrameEvent, vector); } // prevent OpenVRHelper from consuming events return(false); }
/// <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; } }
static void Postfix( OpenVRHelper __instance, XRNode node, Transform transform, Vector3 position, Vector3 rotation ) => SaberGrip.AdjustControllerTransform(__instance, node, transform);