// 노드를 기반으로 선형연결리스트처럼 노드를 이어줌
    public IEnumerator SearchPath(Vector3 startPos, Vector3 endPos)
    {
        yield return(null);

        bool isSuccess = false;

        m_startNode = m_buildGrid.GetNode(startPos);
        m_endNode   = m_buildGrid.GetNode(endPos);

        if (m_startNode.IsWalkable && m_endNode.IsWalkable)
        {
            List <ANode>    openNode  = new List <ANode>();
            HashSet <ANode> closeNode = new HashSet <ANode>();
            openNode.Add(m_startNode);
            while (openNode.Count > 0)
            {
                ANode current = openNode[0];

                for (int i = 1; i < openNode.Count; ++i)
                {
                    if (openNode[i].GetFCost < current.GetFCost || openNode[i].GetFCost == current.GetFCost && openNode[i].HCost < current.HCost)
                    {
                        current = openNode[i];
                    }
                }

                openNode.Remove(current);
                closeNode.Add(current);

                if (current == m_endNode)
                {
                    isSuccess = true;
                    break;
                }

                foreach (ANode node in m_buildGrid.GetNeighbourNode(current))
                {
                    if (!node.IsWalkable || closeNode.Contains(node))
                    {
                        continue;
                    }

                    int currentNeighbourCost = current.GCost + GetCost(node, m_endNode);
                    if (currentNeighbourCost < node.GCost || !openNode.Contains(node))
                    {
                        node.GCost    = currentNeighbourCost;
                        node.HCost    = GetCost(node, m_endNode);
                        node.PrevNode = current;
                        if (!openNode.Contains(node))
                        {
                            openNode.Add(node);
                        }
                    }
                }
            }
        }
        AStarMng.Instance.CompleteProcess(isSuccess ? GetPath(startPos, endPos) : null);
    }