summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <lekensteyn@gmail.com>2014-01-17 17:30:18 +0100
committerPeter Wu <lekensteyn@gmail.com>2014-01-17 17:30:18 +0100
commit0ce5a249d8b8aabc98f3dccee78cced779018594 (patch)
treee3b9540cbf2e4053c0bf934abeeced423f2d3f6c
parent6f03dae6b5ca8073584f76c2cced14d2cdcddc92 (diff)
download2iv60-robots-0ce5a249d8b8aabc98f3dccee78cced779018594.tar.gz
Hide debug track behind B key
-rw-r--r--src/RaceTrack.java53
-rw-r--r--src/RobotRace.java7
2 files changed, 36 insertions, 24 deletions
diff --git a/src/RaceTrack.java b/src/RaceTrack.java
index 9d2c42b..8958c3d 100644
--- a/src/RaceTrack.java
+++ b/src/RaceTrack.java
@@ -31,12 +31,12 @@ class RaceTrack extends BetterBase {
/**
* Array with control points for the L-track.
*/
- private Vector[] controlPointsLTrack;
+ private final Vector[] controlPointsLTrack;
/**
* Array with control points for the C-track.
*/
- private Vector[] controlPointsCTrack;
+ private final Vector[] controlPointsCTrack;
/**
* Array with control points for the custom track.
@@ -45,9 +45,10 @@ class RaceTrack extends BetterBase {
private Vector[] selectedControlPoints;
private final RobotRace race;
/**
- * Debug option: set to true to show control points.
+ * Debug option: set to true to show control points and center line for
+ * Bézier spline tracks.
*/
- private static final boolean drawControlPoints = true;
+ boolean debugBezierTracks = false;
/**
* Constructs the race track, sets up display lists.
@@ -380,25 +381,29 @@ class RaceTrack extends BetterBase {
point_B = point_D;
point_G = point_H;
}
+
+ // debugging purposes: show track center and control points
+ if (debugBezierTracks && selectedControlPoints != null) {
+ drawCenterLineTrack(selectedControlPoints);
+ }
}
/**
- * Draw a closed race track.
+ * Draw a closed race track with control points.
*
* @param pts Control points.
*/
- private void drawTrack(Vector[] pts) {
- if (pts == null) {
- System.err.println("not implemented points");
- return;
- }
-
+ private void drawCenterLineTrack(Vector[] pts) {
+ assert pts != null;
assert pts.length % 3 == 0 : "Multiple of three control points required";
int number_of_segments = pts.length / 3;
// number of "u" units per segment
double segment_size = 1.0 / number_of_segments;
+ // put lines and dots above track
+ gl.glTranslated(0, 0, 1);
+
gl.glLineWidth(5);
gl.glBegin(GL_LINE_STRIP);
for (double i = 0; i <= SEGMENTS; ++i) {
@@ -409,24 +414,26 @@ class RaceTrack extends BetterBase {
// scale the part to 0.0 to 0.1
segment_u *= number_of_segments;
- assert segment_u >= 0.0 && segment_u <= 1.0 : "Segment out of bounds";
+ segment_u = min(segment_u, 1.0);
+ //assert segment_u >= 0.0 && segment_u <= 1.0 : "Segment out of bounds: " + segment_u;
Vector bezierPt = getCubicBezierPnt(segment_u, pts, start);
- gl.glColor4d(1.0, 0.0, segment_number, .8);
+ gl.glColor4d(1.0, 0.0, segment_number % 2 == 0 ? 1 : 0, .8);
glVertex(bezierPt);
}
gl.glEnd();
- if (drawControlPoints) {
- // draw control points
- gl.glPointSize(10);
- gl.glBegin(GL_POINTS);
- for (int i = 0; i < pts.length; i++) {
- double color = ((double) i / 3.0);
- gl.glColor3d(0.0, color, 1.0);
- glVertex(pts[i]);
- }
- gl.glEnd();
+ // draw control points
+ gl.glPointSize(10);
+ gl.glBegin(GL_POINTS);
+ for (int i = 0; i < pts.length; i++) {
+ double color = ((double) i / 3.0);
+ gl.glColor3d(0.0, color, 1.0);
+ glVertex(pts[i]);
}
+ gl.glEnd();
+
+ // restore position
+ gl.glTranslated(0, 0, -1);
}
/**
diff --git a/src/RobotRace.java b/src/RobotRace.java
index 40f0146..806a1f2 100644
--- a/src/RobotRace.java
+++ b/src/RobotRace.java
@@ -88,7 +88,7 @@ public class RobotRace extends Base {
/**
* Instance of the race track.
*/
- private final RaceTrack raceTrack;
+ final RaceTrack raceTrack;
/**
* Instance of the terrain.
@@ -696,6 +696,11 @@ public class RobotRace extends Base {
robotRace.mainWindow.updateElements();
}
return true;
+ case KeyEvent.VK_B:
+ boolean enabled = !robotRace.raceTrack.debugBezierTracks;
+ robotRace.raceTrack.debugBezierTracks = enabled;
+ System.err.println("Show Bézier debug track: " + enabled);
+ return true;
default:
return false;
}