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