public void doPathFinding()
    {
        Node firstNode = new Node(m_current, null, m_end, m_start);

        finalPath = new EnemyPathing();

        OpenList openedList = new OpenList();

        openedList.insertToOpenList(firstNode);

        ClosedList closedList = new ClosedList();
        SearchLvl  search_lvl = new SearchLvl();

        while (openedList.isEmpty() == false)
        {
            Node secondNodes = openedList.get0();

            Node secondNode = new Node(secondNodes.getPosition(), secondNodes.returnPrev(), m_end, m_start);


            openedList.remove0Fromlist();
            closedList.insertToClosedList(secondNode);
            if (Physics2D.OverlapBox(new Vector2(secondNode.getPosition().x, secondNode.getPosition().y), new Vector2(m_halfWidth / 2, m_halfWidth / 2), 0, targetMask))
            {
                results = secondNode;

                break;
            }


            List <Node.Position> adjacentPositions = search_lvl.getAdjacentNodes(secondNode.getPosition().x, secondNode.getPosition().y, tileWid);

            for (int i = 0; i < adjacentPositions.Count; i++)
            {
                if (closedList.isInClosedList(adjacentPositions[i]))
                {
                    continue;
                }

                int  inter        = openedList.findFromOpenList(secondNode.getPosition()); //returns -1 if there was no match, iterator cant be negative anyway
                Node previousNode = new Node(adjacentPositions[i], secondNode, m_end, m_start);
                if (inter != -1)
                {
                    //has been found in open list
                    if (openedList.returnAt(inter).getDistanceFromStart() > previousNode.getDistanceFromStart()) //the new distance is smaller
                    {
                        openedList.returnAt(inter).setPrev(secondNode);
                        //setting the previous node that is found at the index
                    }
                }

                else
                {
                    //lineDrawer(previousNode.getPosition().x, previousNode.getPosition().y);
                    //This method just creates a box, used for debugging purposes only!
                    openedList.insertToOpenList(previousNode);
                }
            }
        }
        if (results != null)
        {
            while (results != null)
            {
                if (results.returnPrev() == null)
                {
                    finalPath.insertToPath(results);
                    results      = null;
                    donePathFind = true;
                }
                else
                {
                    //Debug.DrawLine(new Vector2(results.getPosition().x, results.getPosition().y), new Vector2(results.returnPrev().getPosition().x, results.returnPrev().getPosition().y), Color.red, 1, false);
                    finalPath.insertToPath(results);
                    //draw a line to prev
                    results = results.returnPrev();
                }
            }
            finalPath.Reversed();
        }
        else
        {
            donePathFind = true;
            finalPath    = null;
            //NOT FOUND
        }
    }