/// <summary> /// Creates an instance of OVRDisplay. Called by OVRManager. /// </summary> public Display() { if (Plugin.GetSystemHeadsetType() == Plugin.SystemHeadset.Oculus_Quest) { previousTrackingOrigin = Manager.trackingOriginType; var relativeOrigin = (previousTrackingOrigin != Manager.TrackingOrigin.Stage) ? Manager.TrackingOrigin.Stage : Manager.TrackingOrigin.EyeLevel; previousRelativeTrackingSpacePose = Plugin.GetTrackingTransformRelativePose((Plugin.TrackingOrigin)relativeOrigin).ToOVRPose(); } }
/// <summary> /// Updates the internal state of the OVRDisplay. Called by OVRManager. /// </summary> public void Update() { if (recenterRequested && DateTime.Now.Ticks > recenterRequestedFrameCount) { RecenteredPose?.Invoke(); recenterRequested = false; recenterRequestedFrameCount = long.MaxValue; } if (Plugin.GetSystemHeadsetType() == Plugin.SystemHeadset.Oculus_Quest) { var relativeOrigin = (Manager.trackingOriginType != Manager.TrackingOrigin.Stage) ? Manager.TrackingOrigin.Stage : Manager.TrackingOrigin.EyeLevel; var relativeTrackingSpacePose = Plugin.GetTrackingTransformRelativePose((Plugin.TrackingOrigin)relativeOrigin).ToOVRPose(); //If the tracking origin type hasn't switched and the relative pose changes, a recenter occurred. if (previousTrackingOrigin == Manager.trackingOriginType && previousRelativeTrackingSpacePose != relativeTrackingSpacePose && RecenteredPose != null) { RecenteredPose(); } previousRelativeTrackingSpacePose = relativeTrackingSpacePose; previousTrackingOrigin = Manager.trackingOriginType; } }