| part of game; |
| |
| class ActionCircularMove extends ActionInterval { |
| ActionCircularMove(this.setter, this.center, this.radius, this.startAngle, this.clockWise, double duration) : super (duration); |
| |
| final Function setter; |
| final Point center; |
| final double radius; |
| final double startAngle; |
| final bool clockWise; |
| |
| void update(double t) { |
| if (!clockWise) t = -t; |
| double rad = radians(startAngle + t * 360.0); |
| Offset offset = new Offset(math.cos(rad) * radius, math.sin(rad) * radius); |
| Point pos = center + offset; |
| setter(pos); |
| } |
| } |
| |
| class ActionOscillate extends ActionInterval { |
| ActionOscillate(this.setter, this.center, this.radius, double duration) : super(duration); |
| |
| final Function setter; |
| final Point center; |
| final double radius; |
| |
| void update(double t) { |
| double rad = radians(t * 360.0); |
| Offset offset = new Offset(math.sin(rad) * radius, 0.0); |
| setter(center + offset); |
| } |
| } |