private void ReceiveCallback(System.IAsyncResult ar)
    {
        ReceiveStateObject state = (ReceiveStateObject)ar.AsyncState;

        byte[] buff = state.buffer;

        try{
            Body_ b = new Body_();
            b.FromBytes(buff);
            //Debug.Log ("Received " + b.name + " translation, (x,y,z)=" + b.translation.x + "," + b.translation.y + "," + b.translation.z + "\n");
            StateMutex.WaitOne();
            Bodies_[b.name] = b;
            StateMutex.ReleaseMutex();
        }
        catch (Exception ex)
        {
            Debug.Log("Caught: " + ex.Message);
        }
        viconSocket.BeginReceive(state.buffer, 0, state.BufferSize, 0, new System.AsyncCallback(ReceiveCallback), state);
    }