/// <summary>
    /// Получает самую дальнюю от коннекторов ноду, являющуюся соседней текущей ноде.
    /// </summary>
    private SpawnNode GetFarthestFromConnectorstNeighborNode(SpawnNode node)
    {
        var nextItems = ListUtils.CreateListFrom(node.Index, _allNodes);
        var prevItems = ListUtils.CreateReversedListFrom(node.Index, _allNodes);

        //если соседняя нода занята, то вернуть ноду с другой стороны
        if (nextItems[0].NodeType != SpawnNodeType.Empty)
        {
            return(prevItems[0]);
        }
        if (prevItems[0].NodeType != SpawnNodeType.Empty)
        {
            return(nextItems[0]);
        }

        for (int i = 0; i < nextItems.Count; i++)
        {
            if (nextItems[i].NodeType != SpawnNodeType.Connector)
            {
                return(prevItems[0]);
            }
            if (prevItems[i].NodeType != SpawnNodeType.Connector)
            {
                return(nextItems[0]);
            }
        }
        Debug.LogError("node with connector not found");
        return(null);
    }
    private int GetNearNodeDistance(SpawnNode node, params SpawnNodeType[] types)
    {
        int distance  = 0;
        var nextItems = ListUtils.CreateListFrom(node.Index, _allNodes);
        var prevItems = ListUtils.CreateReversedListFrom(node.Index, _allNodes);

        for (int i = 0; i < nextItems.Count; i++)
        {
            distance++;
            if (nextItems[i].NodeType.In(types) || prevItems[i].NodeType.In(types))
            {
                return(distance);
            }
        }
        return(distance);
    }
    private SpawnNode GetNearNode(SpawnNode node, params SpawnNodeType[] types)
    {
        var nextItems = ListUtils.CreateListFrom(node.Index, _allNodes);
        var prevItems = ListUtils.CreateReversedListFrom(node.Index, _allNodes);

        for (int i = 0; i < nextItems.Count; i++)
        {
            if (nextItems[i].NodeType.In(types))
            {
                return(nextItems[i]);
            }
            if (prevItems[i].NodeType.In(types))
            {
                return(prevItems[i]);
            }
        }
        Debug.LogError("Empty node not found");
        return(null);
    }