private void SetHandOpenness(Hand hand, PXCMHandData.IHand handInfo)
        {
            int openness = handInfo.QueryOpenness();

            SetOpenness(hand, openness);
        }
Esempio n. 2
0
        public override bool Process(Trigger trigger)
        {
            trigger.ErrorDetected = false;
            if (!SenseToolkitManager.Instance.IsSenseOptionSet(SenseOption.SenseOptionID.Hand))
            {
                trigger.ErrorDetected = true;
                Debug.LogError("Hand Analysis Module Not Set");
                return(false);
            }

            if (!(trigger is EventTrigger))
            {
                trigger.ErrorDetected = true;
                return(false);
            }

            bool success = false;

            //AcquireFrame
            if (SenseToolkitManager.Instance.Initialized && SenseToolkitManager.Instance.HandDataOutput != null)
            {
                PXCMHandData.IHand data = null;

                if (SenseToolkitManager.Instance.HandDataOutput.QueryNumberOfHands() > 0
                    &&
                    (
                        (ContinuousTracking && SenseToolkitManager.Instance.HandDataOutput.QueryHandDataById(_uniqueID, out data) >= pxcmStatus.PXCM_STATUS_NO_ERROR)
                        ||
                        SenseToolkitManager.Instance.HandDataOutput.QueryHandData(WhichHand, HandIndex, out data) >= pxcmStatus.PXCM_STATUS_NO_ERROR)
                    )
                {
                    _uniqueID = data.QueryUniqueId();

                    PXCMHandData.JointData jointD;
                    data.QueryTrackedJoint(PXCMHandData.JointType.JOINT_PINKY_JT2, out jointD);

                    if (jointD.confidence < 100)
                    {
                        return(false);
                    }

                    if (data.QueryOpenness() <= OpennessFactor)
                    {
                        _lastFrameDetected = true;
                    }
                    else
                    {
                        if (_lastFrameDetected)
                        {
                            success = true;
                        }

                        _lastFrameDetected = false;
                    }
                }
                else
                {
                    if (_lastFrameDetected)
                    {
                        success = true;
                    }

                    _lastFrameDetected = false;
                }
            }
            return(success);
        }