public async Task Grow()
        {
            --Item.count[Item.Name.BEAN];
            var garden = nodes[0];

            garden.spriteRenderer.sprite = littleTree;
            await Task.Delay(growDelayMiliSec);

            nodes.Clear();
            Destroy(garden);
            var pos = transform.position;

            Use(BeanTreeNode.New(BeanTreeNode.Name.ROOT, pos));
            var head = BeanTreeNode.New(BeanTreeNode.Name.HEAD, pos += Vector3.up, false);
            int h    = 2;

            while (h++ < height)
            {
                Use(BeanTreeNode.New(BeanTreeNode.Name.BODY, pos));
                head.transform.position = (pos += Vector3.up);
                await Task.Delay(growDelayMiliSec);
            }

            head.Use();
            Use(head);
        }
        public static BeanTreeNode DeSerialize(int ID, Vector3 wPos, bool use = true)
        {
            if (ID != 238)
            {
                return(null);
            }
            var garden = BeanTreeNode.New(BeanTreeNode.Name.GARDEN, wPos, use);

            if (!use)
            {
                return(garden);
            }

            var beanTree = Instantiate(R.asset.prefab.beanTree, wPos, Quaternion.identity);

            beanTree.transform.parent = Board.instance.platformAnchor;
            garden.beanTree           = beanTree;
            garden.transform.parent   = beanTree.transform;
            beanTree.nodes.Add(garden);
            return(garden);
        }
 private void Use(BeanTreeNode node)
 {
     node.beanTree         = this;
     node.transform.parent = transform;
     nodes.Add(node);
 }