public void Prowadź(Punkt Koniec, Punkt Wywołujocy, Kolejność kor = Kolejność.Bez)
 {
     Punkt[] pk = new Punkt[MaxksymalnaDługośćDrogi];
     if (Aktywny)
     {
         Prowadź(0, Koniec, ref pk, 0, kor, Wywołujocy == Koniec);
     }
 }
        internal void Prowadź(float Odległość, Punkt Koniec, ref Punkt[] tabW, int l, Kolejność kolejnosc = Kolejność.Bez, bool ZaczyniaeZKońca = false)
        {
            Punkt p = PoczotekKrawdzi, k = KoniecKrawdzi;

            if (ZaczyniaeZKońca)
            {
                p = KoniecKrawdzi;
                k = PoczotekKrawdzi;
            }

            float dystans = Odległość + DługośćKrawedzi;

            if (k.NajkrutszaOdległośćDoKońca < dystans || Koniec.NajkrutszaOdległośćDoKońca < dystans)
            {
                return;
            }
            k.NajkrutszaOdległośćDoKońca = dystans;
            if (kolejnosc != Kolejność.Bez)
            {
                if (kolejnosc == Kolejność.OdRosnocych)
                {
                    if (p.Kolejność < k.Kolejność)
                    {
                        return;
                    }
                }
                else
                {
                    if (p.Kolejność > k.Kolejność)
                    {
                        return;
                    }
                }
            }
            if (tabW.Length <= l)
            {
                return;
            }
            tabW[l++] = k;
            if (k == Koniec)
            {
                if (Koniec.KoniecEvent != null)
                {
                    Punkt[] kar = (Punkt[])tabW.Clone();

                    Array.Resize(ref kar, l);
                    Koniec.KoniecEvent(dystans, kar);
                }
                return;
            }
            foreach (Krawedz item in k.ListaKrawedzi)
            {
                if (item.Aktywny)
                {
                    item.Prowadź(dystans, Koniec, ref tabW, l, kolejnosc, item.KoniecKrawdzi == k);
                }
            }
        }