Ejemplo n.º 1
0
    /// <summary>
    /// Regenerates a Texture2D from the complete image structure stored
    /// on the data structure.
    /// </summary>
    /// <param name="id">Identifier of the image received to regenerate.</param>
    private void RegenerateTextureFromReceivedData(uint id)
    {
        Debug.Log("Regenerating texture from received data.");
        TextureStruc textS = msgData[id];

        msgData.RemoveStream(id);
        Texture2D texture = new Texture2D(textS.width, textS.height);

        texture.SetPixels32(textS.data);
        texture.Apply(true);
        lastCapturedFrame = texture;
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Saves on the data structure the data contained in a chunk.
    /// </summary>
    /// <param name="row">Image's chunk message.</param>
    private void SaveChunk(TextureChunkMessage row)
    {
        TextureStruc textureStruc = msgData[row.id];

        for (int i = 0; i < row.data.Length && i < row.size && textureStruc.pixelsReceived < textureStruc.data.Length; i++)
        {
            textureStruc.data[i + row.order * textureStruc.chunkSize] = row.data[i];
            textureStruc.pixelsReceived += 1;
        }
        msgData[row.id] = textureStruc;
        Debug.Log(textureStruc.pixelsReceived + "/" + textureStruc.data.Length
                  + " pixels currently recived for ID " + row.id + ".");
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Processes the header messages received on the client.
    /// </summary>
    /// <param name="header">Image's header message.</param>
    private void OnTextureHeaderReceived(TextureHeaderMessage header)
    {
        TextureStruc textS = new TextureStruc(header.width, header.height, header.chunkSize);

        msgData.RecoverEarlyChunks(header, textS, SaveChunk);
        if (msgData.CheckTimestamp(header))
        {
            StartCoroutine(
                msgData.WaitTillReceiveAllTheStream(
                    header,
                    (uint id) => msgData[id].pixelsReceived < msgData[id].data.Length,
                    streamTimeout));
        }
    }