correct the position/speed when exiting sliders

This commit is contained in:
yugecin 2016-12-04 15:00:07 +01:00
parent 79f0cead0c
commit 041e0dd439
2 changed files with 17 additions and 1 deletions

View File

@ -40,6 +40,8 @@ import yugecin.opsudance.movers.slidermovers.InheritedSliderMoverController;
import yugecin.opsudance.movers.slidermovers.SliderMoverController; import yugecin.opsudance.movers.slidermovers.SliderMoverController;
import yugecin.opsudance.spinners.*; import yugecin.opsudance.spinners.*;
import java.awt.*;
public class Dancer { public class Dancer {
public static MoverFactory[] moverFactories = new MoverFactory[] { public static MoverFactory[] moverFactories = new MoverFactory[] {
@ -219,6 +221,16 @@ public class Dancer {
c.start = new Vec2f((float) spinnerStartPoint[0], (float) spinnerStartPoint[1]); c.start = new Vec2f((float) spinnerStartPoint[0], (float) spinnerStartPoint[1]);
} }
// specific mover stuff
if (p.isSlider() && sliderMoverController instanceof DefaultSliderMoverController) {
Vec2f st = p.getPointAt(p.getEndTime() - 10);
Vec2f en = p.getPointAt(p.getEndTime());
//double atan = Math.atan2(en.y - st.y, en.x - st.x);
double distance = Utils.distance(st.x, st.y, en.x, en.y);
QuadraticBezierMover.p = new Point((int) st.x, (int) st.y);
QuadraticBezierMover.setPrevspeed(distance, 10);
}
createNewMover(); createNewMover();
} }

View File

@ -25,7 +25,7 @@ import java.awt.*;
public class QuadraticBezierMover extends Mover { public class QuadraticBezierMover extends Mover {
public static int aggressiveness = 50; public static int aggressiveness = 50;
private static Point p; public static Point p;
private static double prevspeed; private static double prevspeed;
public static void reset() { public static void reset() {
@ -33,6 +33,10 @@ public class QuadraticBezierMover extends Mover {
prevspeed = 0; prevspeed = 0;
} }
public static void setPrevspeed(double distance, int timedelta) {
prevspeed = distance * aggressiveness / timedelta;
}
private int startTime; private int startTime;
private int totalTime; private int totalTime;