private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            lastSegmentPosition   = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            lastSegmentPosition.z = 0;

            var stemPositions = new List <Vector3>();
            stemPositions.Add(lastSegmentPosition);

            mainStem.SetStemPositions(stemPositions);
        }
        else if (Input.GetMouseButton(0))
        {
            var newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            newPosition.z = 0;

            var delta = newPosition - lastSegmentPosition;

            if (delta.magnitude > segmentLength)
            {
                lastSegmentPosition = newPosition;
                mainStem.AddStemPosition(newPosition);
            }
        }

        if (Input.GetMouseButtonDown(1))
        {
            mainStem.RemoveStemPosition();
        }
    }