示例#1
0
        public override void UpdateComponent()
        {
            status = Status.Tracking;
            if (OculusDevice.status == Status.Unavailable)
            {
                status = Status.Unavailable;
            }

            Sensor.ID sensorID = isLeft ? Sensor.ID.LeftHand : Sensor.ID.RightHand;

            if (OculusDevice.GetRotationalConfidence(sensorID) == 0)
            {
                status = Status.Present;
            }

            if (status == Status.Present || status == Status.Unavailable)
            {
                positionConfidence = 0;
                rotationConfidence = 0;
                gameObject.SetActive(false);
                return;
            }

            Vector3    localSensorPosition = Target.ToVector3(OculusDevice.GetPosition(sensorID));
            Quaternion localSensorRotation = Target.ToQuaternion(OculusDevice.GetRotation(sensorID));

            transform.position = trackerTransform.TransformPoint(localSensorPosition);
            transform.rotation = trackerTransform.rotation * localSensorRotation;

            positionConfidence = OculusDevice.GetPositionalConfidence(sensorID);
            rotationConfidence = OculusDevice.GetRotationalConfidence(sensorID);
            gameObject.SetActive(true);

            UpdateInput(sensorID);
        }
        public override void UpdateComponent()
        {
            if (OculusDevice.GetRotationalConfidence(sensorId) == 0)
            {
                status             = OculusDevice.IsPresent(0) ? Status.Present : Status.Unavailable;
                positionConfidence = 0;
                rotationConfidence = 0;
                gameObject.SetActive(false);
                return;
            }

            status = Status.Tracking;

            Vector3    localPosition = Target.ToVector3(OculusDevice.GetPosition(sensorId));
            Quaternion localRotation = Target.ToQuaternion(OculusDevice.GetRotation(sensorId));

            transform.position = trackerTransform.TransformPoint(localPosition);
            transform.rotation = trackerTransform.rotation * localRotation;

            positionConfidence = OculusDevice.GetPositionalConfidence(sensorId);
            rotationConfidence = OculusDevice.GetRotationalConfidence(sensorId);
            gameObject.SetActive(true);

            FuseWithUnityCamera();
        }
示例#3
0
        public override void UpdateTracker()
        {
            if (!enabled || trackerTransform == null)
            {
                return;
            }

            if (UnityVRDevice.xrDevice != UnityVRDevice.XRDeviceType.Oculus)
            {
                status = Status.Unavailable;
                return;
            }

            status = OculusDevice.status;

            trackerTransform.localPosition = new Vector3(0, OculusDevice.eyeHeight, 0);
            deviceView.position            = Target.ToVector(trackerTransform.position);
            deviceView.orientation         = Target.ToRotation(trackerTransform.rotation);

            OculusDevice.Update();

            foreach (SubTracker subTracker in subTrackers)
            {
                if (subTracker != null)
                {
                    subTracker.UpdateTracker(humanoid.showRealObjects);
                }
            }

            if (OculusDevice.ovrp_GetAppShouldRecenter() == OculusDevice.Bool.True)
            {
                humanoid.Calibrate();
            }
        }
        public override bool IsPresent()
        {
#if hOCULUS
            return(OculusDevice.IsPresent(Sensor.ID.Tracker1 + subTrackerId));
#else
            return(false);
#endif
        }
示例#5
0
        public override void Calibrate()
        {
            base.Calibrate();

            if (enabled && UnityVRDevice.xrDevice == UnityVRDevice.XRDeviceType.Oculus)
            {
                OculusDevice.ovrp_RecenterTrackingOrigin(unchecked ((uint)OculusDevice.RecenterFlags.IgnoreAll));
            }
        }
        public override void UpdateTracker(bool showRealObjects)
        {
#if hOCULUS
            gameObject.SetActive(showRealObjects && IsPresent());

            Vector3    localPosition = Target.ToVector3(OculusDevice.GetPosition(Sensor.ID.Tracker1 + subTrackerId));
            Quaternion localRotation = Target.ToQuaternion(OculusDevice.GetRotation(Sensor.ID.Tracker1 + subTrackerId));
            transform.position = tracker.trackerTransform.TransformPoint(localPosition);
            transform.rotation = tracker.trackerTransform.rotation * localRotation;
#endif
        }
        public static int GetCount()
        {
            int count = 0;

            for (int i = 0; i < (int)OculusDevice.Tracker.Count; ++i)
            {
                if (OculusDevice.IsPresent(Sensor.ID.Tracker1 + i))
                {
                    count++;
                }
            }

            return(count);
        }
示例#8
0
        private void UpdateRightInput()
        {
            OculusDevice.Controller controllerMask;
#if UNITY_ANDROID && !UNITY_EDITOR
            if (!positionalTracking)
            {
                controllerMask = OculusDevice.Controller.RTrackedRemote;
            }
            else
#endif
            controllerMask = OculusDevice.Controller.RTouch;

            OculusDevice.ControllerState4 controllerState = OculusDevice.GetControllerState(controllerMask);


            float stickButton =
                OculusDevice.GetStickPress(controllerState) ? 1 : (
                    OculusDevice.GetStickTouch(controllerState) ? 0 : -1);

            if (positionalTracking)
            {
                joystick = new Vector3(
                    OculusDevice.GetHorizontalStick(controllerState, false),
                    OculusDevice.GetVerticalStick(controllerState, false),
                    stickButton);
            }
            else
            {
                joystick = new Vector3(
                    OculusDevice.GetHorizontalTouch(controllerState, false),
                    OculusDevice.GetVerticalTouch(controllerState, false),
                    stickButton);
            }

            indexTrigger = OculusDevice.GetTrigger1(controllerState, false);
            handTrigger  = OculusDevice.GetTrigger2(controllerState, false);

            buttonAX =
                OculusDevice.GetButton1Press(controllerState) ? 1 : (
                    OculusDevice.GetButton1Touch(controllerState) ? 0 : -1);
            buttonBY =
                OculusDevice.GetButton2Press(controllerState) ? 1 : (
                    OculusDevice.GetButton2Touch(controllerState) ? 0 : -1);
            thumbrest =
                OculusDevice.GetThumbRest(controllerState) ? 0 : -1;
        }
示例#9
0
        public override void StartTracker(HumanoidControl _humanoid)
        {
            humanoid = _humanoid;

            if (humanoid.headTarget.unityVRHead.enabled && UnityVRDevice.xrDevice == UnityVRDevice.XRDeviceType.Oculus)
            {
                enabled = true;
            }

            if (!enabled || UnityVRDevice.xrDevice != UnityVRDevice.XRDeviceType.Oculus)
            {
                return;
            }

            OculusDevice.Start();

            AddTracker(humanoid, "Oculus");
            StartCameras(trackerTransform);
        }