示例#1
0
        public override void Update()
        {
            if (tracker == null || !tracker.enabled || !enabled)
            {
                return;
            }

            if (hmd == null)
            {
                hmd = sensorTransform.GetComponent <OpenVRHmd>();
                UpdateTarget(headTarget.head.target, sensorTransform);
            }

            hmd.UpdateComponent();
            if (hmd.status != Status.Tracking)
            {
                return;
            }

            if (!calibrated && tracker.humanoid.calibrateAtStart)
            {
                tracker.humanoid.Calibrate();
                calibrated = true;
            }

            UpdateTarget(headTarget.head.target, hmd);
            UpdateNeckTargetFromHead();
        }
示例#2
0
        public override void UpdateTracker()
        {
            if (!enabled || UnityVRDevice.xrDevice != UnityVRDevice.XRDeviceType.OpenVR)
            {
                status = Status.Unavailable;
                return;
            }

            status = OpenVRDevice.status;

            OpenVRDevice.Update();
            Passer.OpenVR.Input.UpdateActionState(activeActionSets, activeActionSetSize);

            deviceView.position    = Target.ToVector(trackerTransform.position);
            deviceView.orientation = Target.ToRotation(trackerTransform.rotation);

            bool showRealObjects = humanoid == null ? true : humanoid.showRealObjects;

            if (hmd != null)
            {
                hmd.UpdateComponent();
            }
            foreach (SubTracker subTracker in subTrackers)
            {
                subTracker.UpdateTracker(showRealObjects);
            }
            foreach (OpenVRController controller in controllers)
            {
                controller.UpdateComponent();
            }
#if hVIVETRACKER
            foreach (ViveTrackerComponent viveTracker in viveTrackers)
            {
                viveTracker.UpdateComponent();
            }
#endif
        }