// Update is called once per frame void Update() { if (server.infoReceived.Count > 0) { KeyValuePair <int, COMData> data = server.infoReceived.Dequeue(); if (data.Value.type == COMData.TYPE.TEXT) { COMData_text text = (COMData_text)data.Value; Log.Debug(data.Key + "|Message Received: " + text.GetText()); } else if (data.Value.type == COMData.TYPE.IMAGE) { COMData_image image = (COMData_image)data.Value; if (imageReceived == null) { imageReceived = new Texture2D(image.imageWidth, image.imageHeight); } else { if (image.imageWidth != imageReceived.width || image.imageHeight != imageReceived.height) { imageReceived = new Texture2D(image.imageWidth, image.imageHeight); } } imageReceived.LoadImage(image.data); Log.Debug("Image Received: " + imageReceived.width + " x " + imageReceived.height); GameObject.Find("RawImage").GetComponent <RawImage>().texture = imageReceived; //server.BroadcastMessage("READY"); } else if (data.Value.type == COMData.TYPE.AUDIO) { } } }
//int framesSkiped = 30; //int counter = 0; //void FixedUpdate() //{ // if (sendImages) // { // counter++; // if (counter == framesSkiped) // { // if (webCam == null) // webCam = GameObject.Find("Main Camera").GetComponent<WebCam>().cam; // if (textureTemp == null) // textureTemp = new Texture2D(webCam.width, webCam.height); // textureTemp.SetPixels32(webCam.GetPixels32()); // imageConverted = textureTemp.EncodeToPNG(); // client.SendInfo_image(imageConverted, textureTemp.width, textureTemp.height); // counter = 0; // } // } //} // Update is called once per frame void Update() { if (client.infoReceived.Count > 0) { COMData data = client.infoReceived.Dequeue(); if (data.type == COMData.TYPE.TEXT) { COMData_text text = (COMData_text)data; Log.Debug("Message Received: " + text.GetText()); if (sendImages) { if (text.GetText() == "READY") { SendImage(); } } } else if (data.type == COMData.TYPE.IMAGE) { COMData_image image = (COMData_image)data; Texture2D texture = new Texture2D(image.imageWidth, image.imageHeight); texture.LoadImage(image.data); texture.Apply(); Log.Debug("Image Received: " + texture.width + " x " + texture.height); GameObject.Find("RawImage").GetComponent <RawImage>().texture = texture; } else if (data.type == COMData.TYPE.AUDIO) { } } }
bool SendImage(COMData_image image) { string header = COMData.macroInit + image.type + COMData.macroSeparator + image.data.Length + COMData.macroSeparator + image.imageWidth + COMData.macroSeparator + image.imageHeight + COMData.macroEnd; Log.AddToDebug(header); socket.Send(System.Text.Encoding.UTF8.GetBytes (header)); int bytesSent = socket.Send(image.data); return bytesSent == image.data.Length; }
void ReceiveImage(int imageSize, int imageWidth, int imageHeight) { Log.AddToLog("Prepare to Resceive Image (size:" + imageSize + " width:" + imageWidth + " height:" + imageHeight + ")"); COMData_image image = new COMData_image(); image.imageWidth = imageWidth; image.imageHeight = imageHeight; image.data = new byte[imageSize]; int bytesReceived = 0; while(bytesReceived != imageSize){ int tmp = socket.Receive(image.data, bytesReceived, imageSize - bytesReceived, SocketFlags.None); bytesReceived += tmp; Log.AddToLog(bytesReceived + " bytes received so far (" + tmp + " this time) - (" + (imageSize - bytesReceived) + " left)"); } Log.AddToDebug(bytesReceived + " bytes received"); if(imageSize == bytesReceived){ infoReceived.Enqueue(image); Log.AddToDebug("Image Received: " + image.data.Length); } }