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;
}
}