SimShift.MapTool.Ets2NavigationSegment.GenerateHiRes C# (CSharp) Method

GenerateHiRes() public method

public GenerateHiRes ( Ets2NavigationSegmentOption opt ) : void
opt Ets2NavigationSegmentOption
return void
        public void GenerateHiRes(Ets2NavigationSegmentOption opt)
        {
            var pts = 512;
            if (Type == Ets2NavigationSegmentType.Road)
            {
                var curve1 = new List<Ets2Point>();
                foreach (var rd in Roads)
                {
                    var rdc = rd.GenerateRoadCurve(pts, opt.LeftLane, opt.EntryLane);
                    if (!curve1.Any())
                    {
                        if (!Entry.Point.CloseTo(rdc.FirstOrDefault())) rdc = rdc.Reverse();
                    }
                    else
                    {
                        var lp = curve1.LastOrDefault();
                        if (!rdc.FirstOrDefault().CloseTo(lp))
                            rdc = rdc.Reverse();
                    }
                    curve1.AddRange(rdc);
                }
                var curve2 = new List<Ets2Point>();
                foreach (var rd in Roads)
                {
                    var rdc = rd.GenerateRoadCurve(pts, opt.LeftLane, opt.ExitLane);
                    if (!curve2.Any())
                    {
                        if (!Entry.Point.CloseTo(rdc.FirstOrDefault())) rdc = rdc.Reverse();
                    }
                    else
                    {
                        var lp = curve2.LastOrDefault();
                        if (!rdc.FirstOrDefault().CloseTo(lp))
                            rdc = rdc.Reverse();
                    }
                    curve2.AddRange(rdc);
                }

                var curve = new List<Ets2Point>();
                curve.AddRange(curve1.Skip(0).Take(curve2.Count / 2));
                curve.AddRange(curve2.Skip(curve2.Count / 2).Take(curve2.Count / 2));
                if (ReversedRoadChain) curve.Reverse();

                opt.HiResPoints = curve;
            }
            if (Type == Ets2NavigationSegmentType.Prefab)
            {
                opt.HiResPoints = opt.Points;
            }
        }