private void UpdateJointsPosition(EventData e)
    {
        if (e.serviceType != EventBase.ServiceType.ServiceTypeMocap) {
            return;
        }

        int sourceId = (int)e.sourceId;
        if(bodyId != sourceId) {
            return;
        }

        /*float shoulderDistance = Vector3.Distance(GetJointPosition(e, 6), GetJointPosition(e, 16));
        horizontalMultiplier = horizontalDistance / shoulderDistance;

        verticalMultiplier = verticalDistance / GetJointPosition(e, 1).y;*/

        if (!isDistortedReality) {
            UpdateHipsPosition (e);
            UpdateJointPosition (leftElbow, e, 7);
            UpdateJointPosition (rightElbow, e, 17);

            UpdateJointPosition (leftHand, e, 9);
            UpdateJointPosition (rightHand, e, 19);

            UpdateJointPosition (leftShoulder, e, 6); //, new Vector3(-0.1f, -0.1f, 0f));
            UpdateJointPosition (rightShoulder, e, 16); //, new Vector3(0.1f, -0.1f, 0f));
            leftHandState = FetchHandState(e.orw);
            rightHandState = FetchHandState(e.orx);

            UpdateJointPosition (leftHip, e, 11);
            UpdateJointPosition (rightHip, e, 21);

            UpdateJointPosition (leftKnee, e, 12);
            UpdateJointPosition (rightKnee, e, 22);

            UpdateJointPosition (leftFoot, e, 13);
            UpdateJointPosition (rightFoot, e, 23);
        } else {
            UpdateHipsPositionDistorted(e);
            UpdateJointPositionDistorted (leftElbow, e, 17);
            UpdateJointPositionDistorted (rightElbow, e, 7);

            UpdateJointPositionDistorted (leftHand, e, 19);
            UpdateJointPositionDistorted (rightHand, e, 9);

            UpdateJointPositionDistorted (leftShoulder, e, 16); //, new Vector3(-0.1f, -0.1f, 0f));
            UpdateJointPositionDistorted (rightShoulder, e, 6);

            UpdateJointPositionDistorted (leftHip, e, 21);
            UpdateJointPositionDistorted (rightHip, e, 11);

            UpdateJointPositionDistorted (leftKnee, e, 22);
            UpdateJointPositionDistorted (rightKnee, e, 12);

            UpdateJointPositionDistorted (leftFoot, e, 23);
            UpdateJointPositionDistorted (rightFoot, e, 13);
        }

        //UpdateJointPosition (leftFinger, e, 10);
        //UpdateJointPosition (rightFinger, e, 20);

        lastUpdate = Time.time;
    }
    private void UpdateJointsPosition(EventData e)
    {
        float shoulderDistance = Vector3.Distance(GetJointPosition(e, 6), GetJointPosition(e, 16));
        horizontalMultiplier = horizontalDistance / shoulderDistance;

        verticalMultiplier = verticalDistance / GetJointPosition(e, 1).y;

        //UpdateJointPosition (hips, e, 0);
        UpdateJointPosition (leftElbow, e, 7);
        UpdateJointPosition (rightElbow, e, 17);

        UpdateJointPosition (leftHand, e, 9);
        UpdateJointPosition (rightHand, e, 19);
        leftHandState = FetchHandState(e.orw);
        rightHandState = FetchHandState(e.orx);

        leftHandIndicator.position = GetJointPosition(e, 9) + kinectPosition;
        rightHandIndicator.position = GetJointPosition(e, 19) + kinectPosition;

        //hips.transform.position = hips.transform.position - originalHipsPosition;
    }