public override IEnumerable <MarkupStylePart> Calculate(MarkupCrosswalk crosswalk, MarkupLOD lod) { var middleOffset = GetVisibleWidth(crosswalk) / 2 + OffsetBefore; var deltaOffset = (Width - LineWidth) / 2 / Mathf.Sin(crosswalk.CornerAndNormalAngle); var firstTrajectory = crosswalk.GetTrajectory(middleOffset - deltaOffset); var secondTrajectory = crosswalk.GetTrajectory(middleOffset + deltaOffset); foreach (var dash in StyleHelper.CalculateSolid(firstTrajectory, lod, CalculateDashes)) { yield return(dash); } foreach (var dash in StyleHelper.CalculateSolid(secondTrajectory, lod, CalculateDashes)) { yield return(dash); } MarkupStylePart CalculateDashes(ITrajectory dashTrajectory) => StyleHelper.CalculateSolidPart(dashTrajectory, 0, LineWidth, Color); }
public override IEnumerable <MarkupStylePart> Calculate(MarkupCrosswalk crosswalk, MarkupLOD lod) { StyleHelper.GetParts(Width, 0, lod, out int count, out float partWidth); var partOffset = GetVisibleWidth(crosswalk) / count; var startOffset = partOffset / 2; for (var i = 0; i < count; i += 1) { var trajectory = crosswalk.GetTrajectory(startOffset + partOffset * i + OffsetBefore); yield return(new MarkupStylePart(trajectory.StartPosition, trajectory.EndPosition, trajectory.Direction, partWidth, Color)); } }