public override void Generate_Internal(TrackWriter trk)
        {
            //int startFrame = 0;
            Random rnd = new Random();

            rnd.NextDouble();

            int   curFrame          = game.Track.Offset;
            Rider curRider          = game.Track.Timeline.GetFrame(curFrame);
            Rider curRiderIter1     = game.Track.Timeline.GetFrame(curFrame, 1);
            Rider nextMomentumRider = curRider.Simulate(game.Track.getTrack(), 0);

            Vector2d[] defaultRider = RiderConstants.createDefaultRider();
            var        rotationMat  = Matrix2d.CreateRotation(MathHelper.DegreesToRadians(rotation));



            for (int i = 0; i < defaultRider.Length; i++)
            {
                var riderRotated = new Vector2d(rotationMat.M11 * defaultRider[i].X + rotationMat.M21 * defaultRider[i].Y,
                                                rotationMat.M12 * defaultRider[i].X + rotationMat.M22 * defaultRider[i].Y);
                var    target = curRider.Body[0].Location + riderRotated + speed;
                double offset = 1.0 + rnd.NextDouble();
                GenerateSingleLine(trk, curRiderIter1.Body[i], nextMomentumRider.Body[i], target, offset);
            }
            return;
        }