private void HandleRotate()
        {
            //Debug.Log("rotate");

            if (LastGameState == IngameSettings.IngameState.Rotate)
            {
                if (EraserButton.interactable)
                {
                    LastGameState = IngameSettings.IngameState.Erase;
                }
                else if (PaintButton.interactable)
                {
                    LastGameState = IngameSettings.IngameState.Paint;
                }
            }

            var touch = Input.GetTouch(0);
            if (touch.deltaTime > 0)
            {
                float swipeSpeed = touch.deltaPosition.magnitude / touch.deltaTime;
                //Vector3 newAngle = ModelTransform.rotation.eulerAngles;
                Vector3 angle = Vector3.zero;

                if (Mathf.Abs(touch.deltaPosition.x) > Mathf.Abs(touch.deltaPosition.y))
                {
                    //Debug.Log("Moving x");
                    float swipeDirectionX = touch.deltaPosition.x < 0 ? 1.0f : -1.0f;
                    angle.y += swipeDirectionX * swipeSpeed * DegreesToRotate.y;
                    //ModelTransform.rotation = Quaternion.AngleAxis(swipeAngle.x, Vector3.up);
                }
                else
                {
                    //Debug.Log("Moving y");
                    float swipeDirectionY = touch.deltaPosition.y < 0 ? 1.0f : -1.0f;
                    angle.x += swipeDirectionY * swipeSpeed * DegreesToRotate.x;
                    //ModelTransform.rotation = Quaternion.AngleAxis(swipeAngle.y, Vector3.forward);
                }

                //newAngle.z = 0;
                ModelTransform.rotation *= Quaternion.Euler(angle);
            }
        }
        private void Update()
        {
            //todo debounce

            if (Input.touchCount > 0)
            {
                // Check if finger is over a UI element
                if (IsPointerOverUI(Input.GetTouch(0).fingerId))
                {
                    return;
                }
            }

            if (Input.touchCount == 2)
            {
                if (IngameSettings.GameState != IngameSettings.IngameState.Zoom)
                {
                    LastGameState = IngameSettings.GameState;
                    IngameSettings.GameState = IngameSettings.IngameState.Zoom;
                }

                HandleZoom();
            }
            else if (Input.touchCount == 1)
            {
                switch (IngameSettings.GameState)
                {
                    case IngameSettings.IngameState.Paint:
                    case IngameSettings.IngameState.Erase:
                        HandlePaint();
                        break;

                    case IngameSettings.IngameState.Rotate:
                        HandleRotate();
                        break;

                    case IngameSettings.IngameState.Zoom:
                        IngameSettings.GameState = LastGameState;
                        break;
                }
            }
            else
            {
                if (IngameSettings.GameState == IngameSettings.IngameState.Zoom)
                {
                    IngameSettings.GameState = LastGameState;
                }
            }

            //Debug.Log("Game state " + IngameSettings.GameState.ToString());
        }
        public void OnRotateSelect()
        {
            if (IngameSettings.GameState == IngameSettings.IngameState.Rotate)
            {
                IngameSettings.GameState = LastGameState;

                //RotateImage.sprite = OriginalRotate;
                //un grey out

                if (LastGameState == IngameSettings.IngameState.Paint)
                {
                    TogglePaint(true);
                    ToggleEraser(false);
                }
                else if (LastGameState == IngameSettings.IngameState.Erase)
                {
                    TogglePaint(false);
                    ToggleEraser(true);
                }

                //Slider.sprite = OriginalSlider;
                //SliderBar.sprite = OriginalSliderBar;
                //BrushSliderControl.interactable = true;
            }
            else
            {
                LastGameState = IngameSettings.GameState;
                IngameSettings.GameState = IngameSettings.IngameState.Rotate;
                Palette.gameObject.SetActive(false);

                //if (LastGameState == IngameSettings.IngameState.Paint)
                //{
                //	RotateImage.sprite = OriginalPaintSprite;
                //	PaintImage.sprite = GreyPaintSprite;
                //}
                //else if (LastGameState == IngameSettings.IngameState.Erase)
                //{
                //	RotateImage.sprite = OriginalEraserSprite;
                //	PaintImage.sprite = GreyEraserSprite;
                //}

                //grey out
                //Slider.sprite = GreySlider;
                //SliderBar.sprite = GreySliderBar;
                //BrushSliderControl.interactable = false;
                TogglePaint(false);
                ToggleEraser(false);
            }
        }