public override double ModifySpeed(double speed, SpeedHint speedHint = SpeedHint.Default) { if (speedHint == SpeedHint.Careful) { return(speed * carefulSpeedScale); } else { return(speed); } }
public virtual void SortAndAppendTo(Vector2d startPoint, IFillPathScheduler2d scheduler) { var saveHint = scheduler.SpeedHint; CurrentPosition = startPoint; List <Index3i> sorted = find_short_path_v1(startPoint); foreach (Index3i idx in sorted) { FillCurveSet2d paths = new FillCurveSet2d(); SpeedHint pathHint = SpeedHint.Default; if (idx.a == 0) { // loop PathLoop loop = Loops[idx.b]; pathHint = loop.speedHint; if (idx.c != 0) { var rolled = loop.loop.RollToVertex(idx.c); paths.Append(rolled); CurrentPosition = rolled.Entry; } else { paths.Append(loop.loop); CurrentPosition = loop.loop.Entry; } } else { // span PathSpan span = Spans[idx.b]; if (idx.c == 1) { span.curve = span.curve.Reversed(); } paths.Append(span.curve); CurrentPosition = span.curve.Exit; pathHint = span.speedHint; } scheduler.SpeedHint = pathHint; scheduler.AppendCurveSets(new List <FillCurveSet2d>() { paths }); } scheduler.SpeedHint = saveHint; }
public override double ModifySpeed(double speed, SpeedHint speedHint) { return(bridgeSpeed); }
public virtual double ModifySpeed(double speed, SpeedHint speedHint) { return(speed * speedScale); }