Kinect.KinectGestures.SetScreenPos C# (CSharp) Method

SetScreenPos() private static method

private static SetScreenPos ( long userId, GestureData &gestureData, Vector3 &jointsPos, bool &jointsTracked ) : void
userId long
gestureData GestureData
jointsPos UnityEngine.Vector3
jointsTracked bool
return void
        private static void SetScreenPos(long userId, ref GestureData gestureData, ref Vector3[] jointsPos, ref bool[] jointsTracked)
        {
            Vector3 handPos = jointsPos[rightHandIndex];
            //		Vector3 elbowPos = jointsPos[rightElbowIndex];
            //		Vector3 shoulderPos = jointsPos[rightShoulderIndex];
            bool calculateCoords = false;

            if (gestureData.joint == rightHandIndex)
            {
                if (jointsTracked[rightHandIndex] /**&& jointsTracked[rightElbowIndex] && jointsTracked[rightShoulderIndex]*/)
                {
                    calculateCoords = true;
                }
            }
            else if (gestureData.joint == leftHandIndex)
            {
                if (jointsTracked[leftHandIndex] /**&& jointsTracked[leftElbowIndex] && jointsTracked[leftShoulderIndex]*/)
                {
                    handPos = jointsPos[leftHandIndex];
                    //				elbowPos = jointsPos[leftElbowIndex];
                    //				shoulderPos = jointsPos[leftShoulderIndex];

                    calculateCoords = true;
                }
            }

            if (calculateCoords)
            {
                //			if(gestureData.tagFloat == 0f || gestureData.userId != userId)
                //			{
                //				// get length from shoulder to hand (screen range)
                //				Vector3 shoulderToElbow = elbowPos - shoulderPos;
                //				Vector3 elbowToHand = handPos - elbowPos;
                //				gestureData.tagFloat = (shoulderToElbow.magnitude + elbowToHand.magnitude);
                //			}

                if (jointsTracked[hipCenterIndex] && jointsTracked[shoulderCenterIndex] &&
                    jointsTracked[leftShoulderIndex] && jointsTracked[rightShoulderIndex])
                {
                    Vector3 shoulderToHips = jointsPos[shoulderCenterIndex] - jointsPos[hipCenterIndex];
                    Vector3 rightToLeft = jointsPos[rightShoulderIndex] - jointsPos[leftShoulderIndex];

                    gestureData.tagVector2.x = rightToLeft.x; // * 1.2f;
                    gestureData.tagVector2.y = shoulderToHips.y; // * 1.2f;

                    if (gestureData.joint == rightHandIndex)
                    {
                        gestureData.tagVector.x = jointsPos[rightShoulderIndex].x - gestureData.tagVector2.x / 2;
                        gestureData.tagVector.y = jointsPos[hipCenterIndex].y;
                    }
                    else
                    {
                        gestureData.tagVector.x = jointsPos[leftShoulderIndex].x - gestureData.tagVector2.x / 2;
                        gestureData.tagVector.y = jointsPos[hipCenterIndex].y;
                    }
                }

                //			Vector3 shoulderToHand = handPos - shoulderPos;
                //			gestureData.screenPos.x = Mathf.Clamp01((gestureData.tagFloat / 2 + shoulderToHand.x) / gestureData.tagFloat);
                //			gestureData.screenPos.y = Mathf.Clamp01((gestureData.tagFloat / 2 + shoulderToHand.y) / gestureData.tagFloat);

                if (gestureData.tagVector2.x != 0 && gestureData.tagVector2.y != 0)
                {
                    Vector3 relHandPos = handPos - gestureData.tagVector;
                    gestureData.screenPos.x = Mathf.Clamp01(relHandPos.x / gestureData.tagVector2.x);
                    gestureData.screenPos.y = Mathf.Clamp01(relHandPos.y / gestureData.tagVector2.y);
                }

                //Debug.Log(string.Format("{0} - S: {1}, H: {2}, SH: {3}, L : {4}", gestureData.gesture, shoulderPos, handPos, shoulderToHand, gestureData.tagFloat));
            }
        }