private void GetPointsFromFlowDirAtTwo(RiverData.Direction predir, RiverData.Direction curdir, Vector3 pos, ref List <Vector3> left, ref List <Vector3> right)
    {
        if (predir == curdir || predir == RiverData.Direction.NotExist)
        {
            var r1 = PointSDir(pos, curdir, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Right));
            var r2 = PointSDir(pos, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Right), RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Down));
            var l1 = PointSDir(pos, curdir, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Left));
            var l2 = PointSDir(pos, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Left), RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Down));

            left.Add(l2);
            left.Add(l1);

            right.Add(r2);
            right.Add(r1);
        }
        else
        {
            var diffdir = RiverData.ThisDirisOrisDirsDir(curdir, predir);

            switch (diffdir)
            {
            case RiverData.Direction.Left:
            {
                var r1 = PointSDir(pos, curdir, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Right));
                var r2 = PointSDir(pos, curdir, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Down));
                var r3 = PointSDir(pos, curdir, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Left));
                var l1 = PointSDir(pos, curdir, RiverData.GetTargetDirsDir(curdir, RiverData.Direction.Down));
            }
            break;

            case RiverData.Direction.Right:
            {
            }
            break;
            }
        }
    }
    private void GenFromOriginBounds(RiverData.Bounds kCur, RiverData.Bounds before)
    {
        if (kCur == null)
        {
            Debug.Log("CC");
        }

        kCur.bHasGend = true;
        var dir = kCur.flowDir;

        if (before == null)// 这是原点
        {
            //if (kCur != null)
            {
                kCur.widthModify = kxModify;

                float centerx = kCur.pos.x + 0.5f;
                float centerz = kCur.pos.z + 0.5f;

                Vector3 center = new Vector3(centerx, 0, centerz);

                var borderleft  = BorderLeft(center, kCur.flowDir);
                var borderright = BorderRight(center, kCur.flowDir);

                var downleft  = DownLeft(center, kCur.flowDir);
                var downRight = DownRight(center, kCur.flowDir);

                var mid = ModifyVector(LerpPos(downleft, downRight, 0.5f));

                var ldir = RiverData.GetTargetDirsDir(kCur.flowDir, RiverData.Direction.Left);
                var rdir = RiverData.GetTargetDirsDir(kCur.flowDir, RiverData.Direction.Right);

                var l = ModifyVector(LerpPos(borderleft, borderright, 0.5f + 0.5f * kRiverPercent * kCur.widthModify));
                var r = ModifyVector(LerpPos(borderright, borderleft, 0.5f + 0.5f * kRiverPercent * kCur.widthModify));

                AddEightVertice(mid, l, r, mid, Color.white);
            }
        }
        else
        {
            //var dir = kCur.flowDir;

            if (kPre.flowDir == kCur.flowDir)
            {
                kCur.widthModify = Mathf.Clamp(kPre.widthModify + kxModify, 0f, 1.0f);


                float centerx = kCur.pos.x + 0.5f;
                float centerz = kCur.pos.z + 0.5f;

                Vector3 center = new Vector3(centerx, 0, centerz);

                var borderleft  = BorderLeft(center, dir);
                var borderright = BorderRight(center, dir);

                var downl = kBoundsPoints[0];
                var downr = kBoundsPoints[1];

                var ldir = RiverData.GetTargetDirsDir(dir, RiverData.Direction.Left);
                var rdir = RiverData.GetTargetDirsDir(dir, RiverData.Direction.Right);

                var l = ModifyVector(LerpPos(borderleft, borderright, 0.5f + 0.5f * kRiverPercent * kCur.widthModify), kCur.diffModify, dir);
                var r = ModifyVector(LerpPos(borderright, borderleft, 0.5f + 0.5f * kRiverPercent * kCur.widthModify), kCur.diffModify, dir);

                AddEightVertice(downl, l, r, downr, Color.white);
            }
            else
            {
                kCur.widthModify = Mathf.Clamp(kPre.widthModify + kxModify, 0f, 1.0f);


                float centerx = kCur.pos.x + 0.5f;
                float centerz = kCur.pos.z + 0.5f;

                Vector3 center = new Vector3(centerx, 0, centerz);

                var borderleft  = BorderLeft(center, dir);
                var borderright = BorderRight(center, dir);

                var downl = kBoundsPoints[0];
                var downr = kBoundsPoints[1];

                var diff = RiverData.ThisDirisOrisDirsDir(kCur.flowDir, kPre.flowDir);

                var l = ModifyVector(LerpPos(borderleft, borderright, 0.5f + 0.5f * kRiverPercent * kCur.widthModify));
                var r = ModifyVector(LerpPos(borderright, borderleft, 0.5f + 0.5f * kRiverPercent * kCur.widthModify));

                AddEightVertice(downl, l, r, downr, Color.white, diff);
            }
        }


        kPre  = kCurE;
        kCurE = kCur.GetLink(kCur.flowDir);
    }