bool ReadStateUpdatePacketHeader(byte[] packetData, out Network.PacketHeader packetHeader)
    {
        Profiler.BeginSample("ReadStateUpdatePacketHeader");

        readStream.Start(packetData);

        bool result = true;

        try
        {
            packetSerializer.ReadStateUpdatePacketHeader(readStream, out packetHeader);
        }
        catch (Network.SerializeException)
        {
            Debug.Log("error: failed to read state update packet header");

            packetHeader.sequence               = 0;
            packetHeader.ack                    = 0;
            packetHeader.ack_bits               = 0;
            packetHeader.frameNumber            = 0;
            packetHeader.resetSequence          = 0;
            packetHeader.avatarSampleTimeOffset = 0.0f;

            result = false;
        }

        readStream.Finish();

        Profiler.EndSample();

        return(result);
    }