public void setNewData(SingleHandData aData)
 {
     palmPosition  = aData.palmPosition;
     palmRotation  = aData.palmRotation;
     wristRotation = aData.wristRotation;
     for (int i = 0; i < 5; ++i)
     {
         fingerPositions[i] = aData.fingerPositions[i];
     }
 }
    public void ParseRawData(ref Byte[] data, int offset)
    {
        DataType       handType = (DataType)data[offset];
        SingleHandData setData  = new SingleHandData();

        int   start = offset + 1;
        float x, y, z;

        x = BitConverter.ToSingle(data, start) * Mathf.Rad2Deg; start += 4;
        y = BitConverter.ToSingle(data, start) * Mathf.Rad2Deg; start += 4;
        z = BitConverter.ToSingle(data, start) * Mathf.Rad2Deg; start += 4;
        if (Single.IsNaN(x) || Single.IsNaN(y) || Single.IsNaN(z))
        {
            Debug.Log("position is nan");
            return;
        }
        setData.palmPosition = new Vector3(x, y, z);

        x  = BitConverter.ToSingle(data, start); start += 4;
        x *= Mathf.Rad2Deg; if (x < 0.0f)
        {
            x += 360.0f;
        }
        y  = BitConverter.ToSingle(data, start); start += 4;
        y *= Mathf.Rad2Deg; if (z < 0.0f)
        {
            z += 360.0f;
        }
        z  = BitConverter.ToSingle(data, start); start += 4;
        z *= Mathf.Rad2Deg; if (y < 0.0f)
        {
            y += 360.0f;
        }
        if (Single.IsNaN(x) || Single.IsNaN(y) || Single.IsNaN(z))
        {
            Debug.Log("rotation is nan");
            return;
        }
        setData.palmRotation = new Vector3(x, y, z);

        x = BitConverter.ToSingle(data, start); start += 4;
        z = BitConverter.ToSingle(data, start); start += 4;
        y = BitConverter.ToSingle(data, start); start += 4;
        if (Single.IsNaN(x) || Single.IsNaN(y) || Single.IsNaN(z))
        {
            Debug.Log("wrist is nan");
            return;
        }
        setData.wristRotation = new Vector3(x, y, z);

        for (int i = 0; i < 5; ++i)
        {
            x = BitConverter.ToSingle(data, start); start += 4;
            z = BitConverter.ToSingle(data, start); start += 4;
            y = BitConverter.ToSingle(data, start); start += 4;
            if (Single.IsNaN(x) || Single.IsNaN(y) || Single.IsNaN(z))
            {
                Debug.Log("finger " + i + " is nan");
                return;
            }
            setData.fingerPositions[i] = new Vector3(x, y, z);
        }

        if (handType == DataType.RightHand)
        {
            rightHand.setNewData(setData);
        }
        else
        {
            leftHand.setNewData(setData);
        }
    }
 public HandNetworkData()
 {
     leftHand  = new SingleHandData();
     rightHand = new SingleHandData();
 }