Kaynağa Gözat

Remote Assist

Rimmon 4 yıl önce
ebeveyn
işleme
3017f07c4f

+ 1 - 0
Assets/Draw/DrawPaintbrush.cs

@@ -18,6 +18,7 @@ public class DrawPaintbrush : DrawShape
 
     public override void StartDraw(Vector2 position)
     {
+        Debug.Log("draw position " + position);
         prevPos_ = rectTransform_.InverseTransformPoint(position);
     }
     public override void StopDraw(Vector2 position)

+ 0 - 1
Assets/Scripts/Models/User.cs

@@ -24,7 +24,6 @@ public class User
 
     public static void UsersReceive(byte[] bytedata)
     {
-        Debug.Log("UsersReceive");
         var player = PlayerController.instance;
         player.users = new Dictionary<uint, User>();
         int read = 5;

+ 31 - 34
Assets/Scripts/Net/Client.cs

@@ -951,34 +951,48 @@ public class Client : MonoBehaviour
         switch (cmd)
         {
             case ImageCMD.receiveImage:
-                var imglen = bytedata.Length - 6;
-                byte[] rawdata = new byte[imglen];
+                var fromId = BitConverter.ToUInt32(bytedata, 6);  //кому пришло
+                User from = User.Find(fromId);
+                if (from != null)
+                {
+                    var imglen = bytedata.Length - 10;
+                    byte[] rawdata = new byte[imglen];
 
-                Array.Copy(bytedata, 6, rawdata, 0, imglen);
-                textureReceived.LoadImage(rawdata);
+                    Array.Copy(bytedata, 10, rawdata, 0, imglen);
+                    textureReceived.LoadImage(rawdata);
 
-                if (UserCameraImage != null)
+                    if (remoteScript_.SessionCallerId == fromId)
+                    {
+                        //UserCameraImage == remoteassist image
+                        remoteScript_.remoteCamImage.texture = textureReceived;
+                    }                    
+                    else if (UserCameraImage != null)
+                    {
+                        SetResolution(textureReceived.width, textureReceived.height);
+
+                        UserCameraImage.SetActive(true);
+                        UserCameraImage.GetComponent<RawImage>().texture = textureReceived;
+                        var player = PlayerController.instance;
+                        UserCameraImage.transform.SetParent(player.UserInfo.transform);
+                        player.UserInfo.SetActive(player.broadcast);
+                    }
+                }
+                else
                 {
-                    SetResolution(textureReceived.width, textureReceived.height);
-
-                    UserCameraImage.SetActive(true);
-                    UserCameraImage.GetComponent<RawImage>().texture = textureReceived;
-                    remoteScript_.remoteCamImage.GetComponent<RawImage>().texture = textureReceived;
-                    var player = PlayerController.instance;
-                    UserCameraImage.transform.SetParent(player.UserInfo.transform);
-                    player.UserInfo.SetActive(player.broadcast);
+                    Debug.LogError("Image sender not found, id: " + fromId);
+                    User.SendGetUser(fromId);
                 }
                 break;
             case ImageCMD.streamStart: break;
             case ImageCMD.streamStop: break;
         }
     }
-    public void ImageStreamStartSend(uint accid)
+    public void ImageStreamStartSend(uint targetAccountId)
     {
         MemoryStream ms = new MemoryStream();
         ms.WriteByte((byte)ImageCMD.streamStart);
         BinaryWriter bw = new BinaryWriter(ms);
-        bw.Write(accid);
+        bw.Write(targetAccountId);
 
         //ms.Write(bdata, 0, bdata.Length);
         //Debug.Log("imagesend bytes "+ms.ToArray().Length);
@@ -992,35 +1006,18 @@ public class Client : MonoBehaviour
         ms.WriteByte((byte)ImageCMD.streamStop);
         BinaryWriter bw = new BinaryWriter(ms);
         bw.Write(accid);
-
         //ms.Write(bdata, 0, bdata.Length);
         //Debug.Log("imagesend bytes "+ms.ToArray().Length);
         var data = ConstructVariablePacket(55, ms.ToArray());
         SendEnqueue(data);
     }
 
-    public void ImageSend(byte[] bdata)
+    public void ImageSend(byte[] bdata, uint targetAccountId)
     {
         MemoryStream ms = new MemoryStream();              
         ms.WriteByte((byte)ImageCMD.receiveImage);
-        //BinaryWriter bw = new BinaryWriter(ms);
-        //bw.Write(1);
-
+        ms.Write(BitConverter.GetBytes(targetAccountId), 0, 4);
         ms.Write(bdata, 0, bdata.Length);
-        //Debug.Log("imagesend bytes "+ms.ToArray().Length);
-        var data = ConstructVariablePacket(55, ms.ToArray());
-        SendEnqueue(data);
-    }
-
-    public void ImageSendRemoteAssist(byte[] bdata, uint targetAccountID)
-    {
-        MemoryStream ms = new MemoryStream();
-        ms.WriteByte((byte)ImageCMD.receiveImage);
-        //BinaryWriter bw = new BinaryWriter(ms);
-        //bw.Write(1);
-
-        ms.Write(bdata, 3, bdata.Length);
-        //Debug.Log("imagesend bytes "+ms.ToArray().Length);
         var data = ConstructVariablePacket(55, ms.ToArray());
         SendEnqueue(data);
     }

+ 1 - 1
Assets/Scripts/RemoteAssist/RemoteClickAction.cs

@@ -17,7 +17,7 @@ public interface IVideoCallSession
 
 public class RemoteClickAction : MonoBehaviour, IVideoCallSession
 {
-    uint SessionCallerId;
+    public uint SessionCallerId;
     const int SCREENSHOT_SUPER_SIZE = 2;
 
     private enum STATE