void Start()
    {
        Vector2 positionWorldSpace = transform.position;

        clipPosition = positionWorldSpace - terrain.GetPositionOffset();

        terrain.ExecuteClip(this);
    }
    void UpdateTouch()
    {
        if (TouchUtility.TouchCount > 0)
        {
            Touch   touch         = TouchUtility.GetTouch(0);
            Vector2 touchPosition = touch.position;

            touchPhase = touch.phase;
            if (touch.phase == TouchPhase.Began)
            {
                Vector2 XOYPlaneLocation = mainCamera.ScreenToWorldPoint(new Vector3(touchPosition.x, touchPosition.y, -cameraZPos));
                currentTouchPoint = XOYPlaneLocation - terrain.GetPositionOffset();

                BuildVertices(currentTouchPoint);

                terrain.ExecuteClip(this);

                previousTouchPoint = currentTouchPoint;
            }
            else if (touch.phase == TouchPhase.Moved)
            {
                Vector2 XOYPlaneLocation = mainCamera.ScreenToWorldPoint(new Vector3(touchPosition.x, touchPosition.y, -cameraZPos));
                currentTouchPoint = XOYPlaneLocation - terrain.GetPositionOffset();

                if ((currentTouchPoint - previousTouchPoint).sqrMagnitude <= touchMoveDistance * touchMoveDistance)
                {
                    return;
                }

                BuildVertices(previousTouchPoint, currentTouchPoint);

                terrain.ExecuteClip(this);

                previousTouchPoint = currentTouchPoint;
            }
        }
    }