//Key send metod
 public static void SendKeyDown(KeyCode code, bool down)
 {
     Message.PlayerGoTo go = new Message.PlayerGoTo();
     go.keySend = true;
     go.down    = down;
     go.key     = (int)code;
     Networking_client.net.Send(Networking_msgType.PlayerMove, go);
 }
 void HandleOnMovePlayer(NetworkMessage netMsg)
 {
     Message.PlayerGoTo go = netMsg.ReadMessage <Message.PlayerGoTo> ();
     if (go.vect != Vector3.zero)
     {
         Player_AnimateControl pl = Data_ListPlayerOnScene.GetPlayerControll(go.index);
         if (pl != null)
         {
             pl.Move(go.vect, go.rotate);
         }
     }
 }
    void Update()
    {
        if (game)
        {
            if (!death)
            {
                //If mobile device
                //Use mobile touch controll
                if (mobile)
                {
                    if (MobileMoveButton.forward)
                    {
                        if (!sendW)
                        {
                            SendKeyDown(KeyCode.W, true);
                            sendW = true;
                        }
                    }

                    if (MobileMoveButton.forwardLeft)
                    {
                        if (!sendW)
                        {
                            SendKeyDown(KeyCode.W, true);
                            sendW = true;
                        }
                        if (!sendA)
                        {
                            SendKeyDown(KeyCode.A, true);
                            sendA = true;
                        }
                    }

                    if (MobileMoveButton.forwardRight)
                    {
                        if (!sendW)
                        {
                            SendKeyDown(KeyCode.W, true);
                            sendW = true;
                        }
                        if (!sendD)
                        {
                            SendKeyDown(KeyCode.D, true);
                            sendD = true;
                        }
                    }

                    if (MobileMoveButton.back)
                    {
                        if (!sendS)
                        {
                            SendKeyDown(KeyCode.S, true);
                            sendS = true;
                        }
                    }

                    if (MobileMoveButton.backLeft)
                    {
                        if (!sendS)
                        {
                            SendKeyDown(KeyCode.S, true);
                            sendS = true;
                        }
                        if (!sendA)
                        {
                            SendKeyDown(KeyCode.A, true);
                            sendA = true;
                        }
                    }

                    if (MobileMoveButton.backRight)
                    {
                        if (!sendS)
                        {
                            SendKeyDown(KeyCode.S, true);
                            sendS = true;
                        }
                        if (!sendD)
                        {
                            SendKeyDown(KeyCode.D, true);
                            sendD = true;
                        }
                    }

                    if (MobileMoveButton.left)
                    {
                        if (!sendA)
                        {
                            SendKeyDown(KeyCode.A, true);
                            sendA = true;
                        }
                    }

                    if (MobileMoveButton.right)
                    {
                        if (!sendD)
                        {
                            SendKeyDown(KeyCode.D, true);
                            sendD = true;
                        }
                    }
                }
                //If desctop
                //Use desctop controll WSDA
                else if (!Cursor.visible)
                {
                    if (Input.GetKeyDown(KeyCode.W))
                    {
                        if (!sendW)
                        {
                            SendKeyDown(KeyCode.W, true);
                            sendW = true;
                        }
                    }

                    if (Input.GetKeyDown(KeyCode.S))
                    {
                        if (!sendS)
                        {
                            SendKeyDown(KeyCode.S, true);
                            sendS = true;
                        }
                    }

                    if (Input.GetKeyDown(KeyCode.A))
                    {
                        if (!sendA)
                        {
                            SendKeyDown(KeyCode.A, true);
                            sendA = true;
                        }
                    }

                    if (Input.GetKeyDown(KeyCode.D))
                    {
                        if (!sendD)
                        {
                            SendKeyDown(KeyCode.D, true);
                            sendD = true;
                        }
                    }
                    //Fire click
                    if (Input.GetMouseButtonDown(0))
                    {
                        Message.MouseButton shoot = new Message.MouseButton();
                        shoot.down = true;
                        Networking_client.net.Send(Networking_msgType.MouseButton, shoot);
                    }
                    if (Input.GetMouseButtonUp(0))
                    {
                        Message.MouseButton shoot = new Message.MouseButton();
                        shoot.down = false;
                        Networking_client.net.Send(Networking_msgType.MouseButton, shoot);
                    }

                    //Drop weapon function
                    //if (Input.GetKeyDown(KeyCode.G))
                    //{
                    //    Networking_client.SendMyAction(Networking_msgType.DropWeapon);
                    //}

                    //Pick up weapon
                    if (Input.GetKeyDown(KeyCode.E))
                    {
                        if (lookAtItem)
                        {
                            lookAtItem.SendMessage("PickUpThisItem");
                        }
                    }
                }

                //If mobile device
                //Rotate character touching on display
                if (mobile)
                {
                    //If touch and menu not open
                    if (Input.touchCount > 0 && !mobileMenu.activeInHierarchy)
                    {
                        //Touch ID
                        int t = -1;
                        //If this touch not the on move controll
                        if (Input.touchCount == 1 && MobileMoveButton.touchID == -1)
                        {
                            t = 0;
                        }
                        else
                        {
                            //If have touch on move controller and touch count more 2
                            if (Input.touchCount > 1)
                            {
                                if (MobileMoveButton.touchID == 0)
                                {
                                    t = 1;
                                }
                                else
                                {
                                    t = 0;
                                }
                            }
                        }
                        if (t != -1)
                        {
                            //If touch begin. Calculate rotation from this start position.
                            if (Input.GetTouch(t).phase == TouchPhase.Began)
                            {
                                oldTuoch = Input.GetTouch(t).position;
                            }
                            //If touch move. Calculate rotation were 0.15f(default sens).
                            else if (Input.GetTouch(t).phase == TouchPhase.Moved)
                            {
                                if (oldTuoch != Input.GetTouch(t).position)
                                {
                                    mouseX = (Input.GetTouch(t).position.x - oldTuoch.x) * 0.15f;
                                }
                                oldTuoch = Input.GetTouch(t).position;
                            }
                            //If touch ended. Calculate rotation were 0.15f(default sens) and set touchID -1.
                            else if (Input.GetTouch(t).phase == TouchPhase.Ended)
                            {
                                if (oldTuoch != Input.GetTouch(t).position)
                                {
                                    mouseX = (Input.GetTouch(t).position.x - oldTuoch.x) * 0.15f;
                                }
                                oldTuoch = Input.GetTouch(t).position;
                                t        = -1;
                            }
                        }
                        else
                        {
                            mouseX = 0;
                        }
                    }
                    else
                    {
                        mouseX = 0;
                    }
                }
                //If desctop. Calculate rotation on mouse asix.
                else
                {
                    if (!menu.activeInHierarchy && !Chat.visibleChat)
                    {
                        mouseX = Input.GetAxis("Mouse X");
                    }
                    else
                    {
                        mouseX = 0;
                    }
                }
                //Apply rotate on client and send axisY
                vect.Set(transf.eulerAngles.x, transf.eulerAngles.y + mouseX, transf.eulerAngles.z);
                if (transf.eulerAngles != vect)
                {
                    Message.PlayerGoTo go = new Message.PlayerGoTo();
                    go.keySend = false;
                    go.axisY   = transf.eulerAngles.y;
                    Networking_client.net.SendUnreliable(Networking_msgType.PlayerMove, go);
                }
                transf.eulerAngles = vect;
            }

            //Off move action on mobile
            if (mobile)
            {
                if (!MobileMoveButton.forward && !MobileMoveButton.forwardLeft && !MobileMoveButton.forwardRight)
                {
                    if (sendW)
                    {
                        SendKeyDown(KeyCode.W, false);
                        sendW = false;
                    }
                }

                if (!MobileMoveButton.forwardLeft && !MobileMoveButton.forward)
                {
                    if (sendW && sendA)
                    {
                        SendKeyDown(KeyCode.W, false);
                        sendW = false;
                        SendKeyDown(KeyCode.A, false);
                        sendA = false;
                    }
                }

                if (!MobileMoveButton.forwardRight && !MobileMoveButton.forward)
                {
                    if (sendW && sendD)
                    {
                        SendKeyDown(KeyCode.W, false);
                        sendW = false;
                        SendKeyDown(KeyCode.D, false);
                        sendD = false;
                    }
                }

                if (!MobileMoveButton.back && !MobileMoveButton.backLeft && !MobileMoveButton.backRight)
                {
                    if (sendS)
                    {
                        SendKeyDown(KeyCode.S, false);
                        sendS = false;
                    }
                }

                if (!MobileMoveButton.backLeft && !MobileMoveButton.back)
                {
                    if (sendS && sendA)
                    {
                        SendKeyDown(KeyCode.S, false);
                        sendS = false;
                        SendKeyDown(KeyCode.A, false);
                        sendA = false;
                    }
                }

                if (!MobileMoveButton.backRight && !MobileMoveButton.back)
                {
                    if (sendS && sendD)
                    {
                        SendKeyDown(KeyCode.S, false);
                        sendS = false;
                        SendKeyDown(KeyCode.D, false);
                        sendD = false;
                    }
                }

                if (!MobileMoveButton.left && !MobileMoveButton.forwardLeft && !MobileMoveButton.backLeft)
                {
                    if (sendA)
                    {
                        SendKeyDown(KeyCode.A, false);
                        sendA = false;
                    }
                }

                if (!MobileMoveButton.right && !MobileMoveButton.forwardRight && !MobileMoveButton.backRight)
                {
                    if (sendD)
                    {
                        SendKeyDown(KeyCode.D, false);
                        sendD = false;
                    }
                }
            }
            //Off move action on desctop
            else
            {
                if (Input.GetKeyUp(KeyCode.D))
                {
                    if (sendD)
                    {
                        SendKeyDown(KeyCode.D, false);
                        sendD = false;
                    }
                }

                if (Input.GetKeyUp(KeyCode.A))
                {
                    if (sendA)
                    {
                        SendKeyDown(KeyCode.A, false);
                        sendA = false;
                    }
                }

                if (Input.GetKeyUp(KeyCode.S))
                {
                    if (sendS)
                    {
                        SendKeyDown(KeyCode.S, false);
                        sendS = false;
                    }
                }

                if (Input.GetKeyUp(KeyCode.W))
                {
                    if (sendW)
                    {
                        SendKeyDown(KeyCode.W, false);
                        sendW = false;
                    }
                }
            }

            //If death set active respawn button
            if (death)
            {
                if (mobile)
                {
                    buttonRespawnMobile.SetActive(true);
                }
                else
                {
                    button.SetActive(true);
                }
                Cursor.lockState = CursorLockMode.None;
                Cursor.visible   = true;
            }
            else
            {
                if (mobile)
                {
                    buttonRespawnMobile.SetActive(false);
                }
                else
                {
                    button.SetActive(false);
                }
            }

            //Desctop key controll
            if (!mobile)
            {
                if (Input.GetKeyDown(KeyCode.Escape))
                {
                    if (menu.activeInHierarchy)
                    {
                        menu.SetActive(false);
                        if (!Chat.visibleChat)
                        {
                            Cursor.lockState = CursorLockMode.Locked;
                            Cursor.visible   = false;
                        }
                    }
                    else
                    {
                        menu.SetActive(true);
                        Cursor.lockState = CursorLockMode.None;
                        Cursor.visible   = true;
                    }
                }

                if (Input.GetKeyDown(KeyCode.R))
                {
                    Networking_client.SendMyAction(Networking_msgType.Reload);
                }
                if (!mobile)
                {
                    if (!death && !menu.activeInHierarchy && !Chat.visibleChat)
                    {
                        Cursor.lockState = CursorLockMode.Locked;
                        Cursor.visible   = false;
                    }
                }
            }
        }
    }