-
Notifications
You must be signed in to change notification settings - Fork 35
/
DrivePathAction.java
52 lines (43 loc) · 1.26 KB
/
DrivePathAction.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.team254.frc2019.auto.actions;
import com.team254.frc2019.paths.PathContainer;
import com.team254.frc2019.subsystems.Drive;
import com.team254.lib.control.Path;
import com.team254.lib.util.DriveSignal;
/**
* Drives the robot along the Path defined in the PathContainer object. The action finishes once the robot reaches the
* end of the path.
*
* @see PathContainer
* @see Path
* @see Action
*/
public class DrivePathAction implements Action {
private PathContainer mPathContainer;
private Path mPath;
private Drive mDrive = Drive.getInstance();
private boolean mStopWhenDone;
public DrivePathAction(PathContainer p, boolean stopWhenDone) {
mPathContainer = p;
mPath = mPathContainer.buildPath();
mStopWhenDone = stopWhenDone;
}
public DrivePathAction(PathContainer p) {
this(p, false);
}
@Override
public void start() {
mDrive.setWantDrivePath(mPath, mPathContainer.isReversed());
}
@Override
public void update() {}
@Override
public boolean isFinished() {
return mDrive.isDoneWithPath();
}
@Override
public void done() {
if (mStopWhenDone) {
mDrive.setVelocity(new DriveSignal(0, 0), new DriveSignal(0, 0));
}
}
}