Belmont135431

ScreenSaver

May 11th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.27 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using UnityEngine;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.Threading;
  8. using System;
  9.  
  10. public class ScreenSaver : MonoBehaviour {
  11.  
  12.     byte[] receiveArr;
  13.     bool writeFile = false;
  14.     int index = 0;
  15.     int allCount = 0;
  16.  
  17.     List<byte[]> list = new List<byte[]>();
  18.     public string nameFile;
  19.  
  20.     void WritePng()
  21.     {
  22.         writeFile = false;
  23.         int indexArr = 0;
  24.         for (int i = 0; i < list.Count; i++)
  25.         {
  26.             for (int j = 0; j < list[i].Length; j++)
  27.             {
  28.                 indexArr++;
  29.             }
  30.         }
  31.  
  32.         receiveArr = new byte[indexArr];
  33.         indexArr = 0;
  34.  
  35.         for (int i = 0; i < list.Count; i++)
  36.         {
  37.             for (int j = 0; j < list[i].Length; j++)
  38.             {
  39.                 receiveArr[indexArr] = list[i][j];
  40.                 indexArr++;
  41.             }
  42.         }
  43.  
  44.         File.WriteAllBytes(nameFile+".png", receiveArr);
  45.     }
  46.  
  47.     // Update is called once per frame
  48.     void Update() {
  49.         if (writeFile)
  50.         {
  51.             WritePng();
  52.         }
  53.  
  54.         if (Input.GetKeyDown(KeyCode.Space))
  55.         {
  56.             WritePng();
  57.         }
  58.  
  59.         if (Input.GetKeyDown(KeyCode.P))
  60.         {
  61.             StartCoroutine(UploadPNG());
  62.         }
  63.     }
  64.  
  65.     IEnumerator UploadPNG()
  66.     {
  67.         yield return new WaitForEndOfFrame();
  68.         Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
  69.         texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
  70.         texture.Apply();
  71.  
  72.         byte[] bytes = texture.EncodeToPNG();
  73.  
  74.         Destroy(texture);
  75.  
  76.         int lengthPacket = 255;
  77.  
  78.         int countOfMessage = bytes.Length / lengthPacket;
  79.         int remainder = bytes.Length % lengthPacket;
  80.  
  81.         byte idMessage = 0;
  82.         byte[] temp;
  83.         int startIndex = 0;
  84.         int receiveCount = countOfMessage + ((remainder > 0) ? 1 : 0);
  85.  
  86.         for (int i = 0; i < receiveCount; i++)
  87.         {
  88.             temp = new byte[lengthPacket + 9];
  89.             temp[0] = idMessage;
  90.  
  91.  
  92.             byte[] numberOfPacket = BitConverter.GetBytes(i);
  93.             temp[1] = numberOfPacket[0];
  94.             temp[2] = numberOfPacket[1];
  95.             temp[3] = numberOfPacket[2];
  96.             temp[4] = numberOfPacket[3];
  97.  
  98.  
  99.             byte[] allPacket = BitConverter.GetBytes(receiveCount);
  100.             temp[5] = allPacket[0];
  101.             temp[6] = allPacket[1];
  102.             temp[7] = allPacket[2];
  103.             temp[8] = allPacket[3];
  104.  
  105.             if (i < countOfMessage)
  106.             {
  107.  
  108.                 Array.Copy(bytes, startIndex, temp, 9, lengthPacket);
  109.  
  110.                 startIndex += lengthPacket;
  111.             }
  112.  
  113.             if (i >= countOfMessage && remainder > 0)
  114.             {
  115.                 temp = new byte[9 + remainder];
  116.  
  117.                 Array.Copy(bytes, startIndex, temp, 9, remainder);
  118.             }
  119.             Debug.Log(i);
  120.         }
  121.         byte[] end = new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0 };
  122.  
  123.         Debug.Log(countOfMessage + "  " + remainder);
  124.  
  125.         File.WriteAllBytes(Application.dataPath + "/../"+nameFile+".png", bytes);
  126.  
  127.         Debug.Log("File is saved");
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment