コード例 #1
0
    public void OnPrivateMessage(string sender, object message, string channelName)
    {
        switch (message.GetType().ToString())
        {
        // Если сообщение с типом byte
        case "System.Byte[]":
        {
            texture2D.LoadImage((byte[])message);
            texture2D.Apply();
            break;
        }

        // Если сообщение с типом string
        case "System.String":
        {
            Photon.Realtime.Player[] players = PhotonNetwork.PlayerListOthers.ToArray <Photon.Realtime.Player>();
            if (sender != PhotonNetwork.LocalPlayer.NickName)
            {
                AddMessageToChat(sender, message);
            }
            break;
        }

        case "System.Object[]":
        {
            var messageArray = (object[])message;
            var drawMode     = (Glossary.DrawMode)messageArray[0];

            if (drawMode == Glossary.DrawMode.Brush)
            {
                _drawController.DrawBrush((Vector3[])messageArray[1],
                                          (Vector2)messageArray[2],
                                          ui.arCamera.GetComponent <Camera>(),
                                          ui.Model.transform.position);
            }
            else if (drawMode == Glossary.DrawMode.Circle || drawMode == Glossary.DrawMode.Rectangle ||
                     drawMode == Glossary.DrawMode.Triangle)
            {
                var shapeToDraw = Instantiate(_drawModeToPrefab[drawMode]);

                _drawController.DrawObject(drawMode, shapeToDraw,
                                           (Vector3[])messageArray[1],
                                           (Vector2)messageArray[2],
                                           ui.arCamera.GetComponent <Camera>(),
                                           ui.Model.transform.position);
            }

            break;
        }

        case "System.Int32":
        {
            var mode = (Glossary.DrawMode)message;
            if (mode == Glossary.DrawMode.Clear)
            {
                _drawController.Clear();
            }
            break;
        }

        default:
        {
            Debug.Log($"Message had an unexpected type {message.GetType().ToString()}");
            break;
        }
        }
    }