IEnumerator JointUpdate(ulong userId, Kinect.Joint joint)
    {
        string     jointName;
        float      x, y, z;
        Vector3    vec = GetVector3FromJoint(joint);
        Quaternion q   = Quaternion.identity;
        ZigJointId jointId;

        // argStr: user,jointName,x,y,z
        jointName = joint.ToString();

        jointId = _kinectToZigMapping[joint.JointType];
        if (joint.JointType == Kinect.JointType.Head)
        {
            headP = vec;
            headQ = q;
            UpdateLgTrackedUser(userId, headP);
        }
        ZigTrackedUser tUser      = _Bodies[userId];
        ZigInputJoint  inputJoint = new ZigInputJoint(jointId, vec, q, true);

        inputJoint.GoodPosition      = true;
        inputJoint.GoodRotation      = true;
        tUser.Skeleton[(int)jointId] = inputJoint;

        yield return(1);
    }