예제 #1
0
 public override double ModifySpeed(double speed, SpeedHint speedHint = SpeedHint.Default)
 {
     if (speedHint == SpeedHint.Careful)
     {
         return(speed * carefulSpeedScale);
     }
     else
     {
         return(speed);
     }
 }
예제 #2
0
        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;
        }
예제 #3
0
 public override double ModifySpeed(double speed, SpeedHint speedHint)
 {
     return(bridgeSpeed);
 }
예제 #4
0
 public virtual double ModifySpeed(double speed, SpeedHint speedHint)
 {
     return(speed * speedScale);
 }