Example #1
0
        private void Update()
        {
            if (!MLHands.IsStarted)
            {
                return;
            }

            if (MLHands.Left.HandConfidence > ConfidenceThreshold)
            {
                LeftIndexTip.position = MLHands.Left.Index.Tip.Position;
                LeftThumbTip.position = MLHands.Left.Thumb.Tip.Position;
                LeftPinkyTip.position = MLHands.Left.Pinky.Tip.Position;
                LeftCenter.position   = MLHands.Left.Center;
                LeftWrist.position    = MLHands.Left.Wrist.Center.Position;
                LeftCenter.LookAt(LeftWrist);
                LeftCenter.position = Vector3.MoveTowards(LeftCenter.position, LeftWrist.position, CenterOffset);
            }

            if (MLHands.Right.HandConfidence > ConfidenceThreshold)
            {
                RightIndexTip.position = MLHands.Right.Index.Tip.Position;
                RightThumbTip.position = MLHands.Right.Thumb.Tip.Position;
                RightPinkyTip.position = MLHands.Right.Pinky.Tip.Position;
                RightCenter.position   = MLHands.Right.Center;
                RightWrist.position    = MLHands.Right.Wrist.Center.Position;
                RightCenter.LookAt(RightWrist);
                RightCenter.position = Vector3.MoveTowards(RightCenter.position, RightWrist.position, CenterOffset);
            }

            var leftPoseConfident = MLHands.Left.KeyPoseConfidence > ConfidenceThreshold;
            var leftPointing      = MLHands.Left.KeyPose.Equals(MLHandKeyPose.Finger) && leftPoseConfident;
            var leftOpen          = MLHands.Left.KeyPose.Equals(MLHandKeyPose.OpenHandBack) && leftPoseConfident;
            var leftFist          = MLHands.Left.KeyPose.Equals(MLHandKeyPose.Fist) && leftPoseConfident;
            var leftPinch         = MLHands.Left.KeyPose.Equals(MLHandKeyPose.Pinch) && leftPoseConfident;

            _leftFingerCollider.enabled = leftPointing;
            _leftCenterCollider.enabled = !leftPointing;
            _renderes[0].material.color = leftPointing ? Color.red : Color.green;
            _renderes[3].material.color = leftOpen ? Color.gray : leftPinch ? Color.blue : Color.black;

            var rightPoseConfident = MLHands.Right.KeyPoseConfidence > ConfidenceThreshold;
            var rightPointing      = MLHands.Right.KeyPose.Equals(MLHandKeyPose.Finger) && rightPoseConfident;
            var rightOpen          = MLHands.Right.KeyPose.Equals(MLHandKeyPose.OpenHandBack) && rightPoseConfident;
            var rightFist          = MLHands.Right.KeyPose.Equals(MLHandKeyPose.Fist) && rightPoseConfident;
            var rightPinch         = MLHands.Right.KeyPose.Equals(MLHandKeyPose.Pinch) && rightPoseConfident;

            _rightFingerCollider.enabled = rightPointing;
            _rightCenterCollider.enabled = !rightPointing;
            _renderes[5].material.color  = rightPointing ? Color.red : Color.green;
            _renderes[8].material.color  = rightOpen ? Color.gray : rightPinch ? Color.blue : Color.black;

            TelekinesisController.Holding = leftOpen || rightOpen || leftPinch || rightPinch || leftFist || rightFist;
            if (!_poppingBubbles && (leftFist || rightFist))
            {
                TelekinesisController.PopAllHeldBubbles();
                _poppingBubbles = true;
            }
            else if (!TelekinesisController.Inflating && leftPinch)
            {
                TelekinesisController.StartInflatingBubble(MLHands.Left);
            }
            else if (!TelekinesisController.Inflating && rightPinch)
            {
                TelekinesisController.StartInflatingBubble(MLHands.Right);
            }
            else if (TelekinesisController.Inflating && leftOpen)
            {
                TelekinesisController.PopInflatingBubble(MLHands.Left);
            }
            else if (TelekinesisController.Inflating && rightOpen)
            {
                TelekinesisController.PopInflatingBubble(MLHands.Right);
            }

            if (!leftFist && !rightFist)
            {
                _poppingBubbles = false;
            }
        }