Example #1
0
        private void UpdateHandPose(ISnapper snapper, float fingersConstraint, float wristConstraint)
        {
            ISnapData snap = snapper.SnapData;

            if (snap == null)
            {
                FreeFingers();
                FreeWrist();
                return;
            }

            if (fingersConstraint > 0f &&
                snap.HandPose != null)
            {
                UpdateFingers(snap.HandPose, snapper.SnappingFingers(), fingersConstraint);
                _areFingersFree = false;
            }
            else
            {
                FreeFingers();
            }

            if (wristConstraint > 0f)
            {
                Pose wristLocalPose = GetWristPose(snap.WorldSnapPose, snapper.WristToSnapOffset);
                Pose wristPose      = Transformer.ToTrackingPose(wristLocalPose);
                _syntheticHand.LockWristPose(wristPose, wristConstraint);
                _isWristFree = false;
            }
            else
            {
                FreeWrist();
            }
        }
Example #2
0
        private void ConstrainingForce(ISnapper snapper, out float fingersConstraint, out float wristConstraint)
        {
            ISnapData snap = snapper.SnapData;

            fingersConstraint = wristConstraint = 0;
            if (snap == null)
            {
                return;
            }

            bool isSnapping = snapper.IsSnapping;

            if (isSnapping && snap.HandAlignment != HandAlignType.None)
            {
                fingersConstraint = snap.HandPose != null ? 1f : 0f;
                wristConstraint   = 1f;
            }
            else if (snap.HandAlignment == HandAlignType.AttractOnHover)
            {
                fingersConstraint = snap.HandPose != null ? snapper.SnapStrength : 0f;
                wristConstraint   = snapper.SnapStrength;
            }

            if (fingersConstraint >= 1f && !isSnapping)
            {
                fingersConstraint = 0;
            }

            if (wristConstraint >= 1f && !isSnapping)
            {
                wristConstraint = 0f;
            }
        }