From c1096615afac1175221057319598fbea7c28cf14 Mon Sep 17 00:00:00 2001 From: Nick Gasson <nick@nickg.me.uk> Date: Fri, 1 May 2009 19:04:19 +0100 Subject: [PATCH] Reduce track size --- include/TrackCommon.hpp | 5 +++ src/Game.cpp | 4 +- src/TrackCommon.cpp | 83 +++++++++++++++++++++-------------------- src/Train.cpp | 2 + 4 files changed, 52 insertions(+), 42 deletions(-) diff --git a/include/TrackCommon.hpp b/include/TrackCommon.hpp index 14c9cb8..9bb89a2 100644 --- a/include/TrackCommon.hpp +++ b/include/TrackCommon.hpp @@ -24,4 +24,9 @@ void renderStraightRail(); void renderCurvedTrack(int baseRadius, double startAngle, double endAngle); void transformToOrigin(int baseRadius, double startAngle); +// Track constants +namespace track { + const double RAIL_HEIGHT = 0.1; +} + #endif diff --git a/src/Game.cpp b/src/Game.cpp index abf1407..a23a32b 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -105,10 +105,10 @@ void Game::onKeyDown(SDLKey aKey) myMovement.x = speed; break; case SDLK_UP: - myMovement.y = -yspeed; + myMovement.y = yspeed; break; case SDLK_DOWN: - myMovement.y = yspeed; + myMovement.y = -yspeed; break; case SDLK_b: myTrain->controller()->actOn(BRAKE_TOGGLE); diff --git a/src/TrackCommon.cpp b/src/TrackCommon.cpp index e5909d8..c3e6ce8 100644 --- a/src/TrackCommon.cpp +++ b/src/TrackCommon.cpp @@ -23,12 +23,13 @@ #include <GL/gl.h> -namespace Track { +namespace track { const double railWidth = 0.05; - const double railHeight = 0.1; - const double gauge = 0.7; + const double gauge = 0.5; const int sleepersPerUnit = 4; + + const float SLEEPER_LENGTH = 0.8; } // Draw a sleeper in the current maxtrix location @@ -46,40 +47,42 @@ void renderSleeper() glColor3d(0.5, 0.3, 0.0); glBegin(GL_QUADS); + const double r = track::SLEEPER_LENGTH / 2.0; + // Top glNormal3d(0.0, 1.0, 0.0); // Up - glVertex3d(-sleeperOff, sleeperDepth, -0.5); - glVertex3d(-sleeperOff, sleeperDepth, 0.5); - glVertex3d(sleeperOff, sleeperDepth, 0.5); - glVertex3d(sleeperOff, sleeperDepth, -0.5); + glVertex3d(-sleeperOff, sleeperDepth, -r); + glVertex3d(-sleeperOff, sleeperDepth, r); + glVertex3d(sleeperOff, sleeperDepth, r); + glVertex3d(sleeperOff, sleeperDepth, -r); // Side 1 glNormal3d(1.0, 0.0, 0.0); // +ve x - glVertex3d(sleeperOff, sleeperDepth, -0.5); - glVertex3d(sleeperOff, 0.0, -0.5); - glVertex3d(-sleeperOff, 0.0, -0.5); - glVertex3d(-sleeperOff, sleeperDepth, -0.5); + glVertex3d(sleeperOff, sleeperDepth, -r); + glVertex3d(sleeperOff, 0.0, -r); + glVertex3d(-sleeperOff, 0.0, -r); + glVertex3d(-sleeperOff, sleeperDepth, -r); // Side 2 glNormal3d(-1.0, 0.0, 0.0); // -ve x - glVertex3d(-sleeperOff, sleeperDepth, 0.5); - glVertex3d(-sleeperOff, 0.0, 0.5); - glVertex3d(sleeperOff, 0.0, 0.5); - glVertex3d(sleeperOff, sleeperDepth, 0.5); + glVertex3d(-sleeperOff, sleeperDepth, r); + glVertex3d(-sleeperOff, 0.0, r); + glVertex3d(sleeperOff, 0.0, r); + glVertex3d(sleeperOff, sleeperDepth, r); // Front glNormal3d(0.0, 0.0, 1.0); // +ve z - glVertex3d(sleeperOff, 0.0, 0.5); - glVertex3d(sleeperOff, 0.0, -0.5); - glVertex3d(sleeperOff, sleeperDepth, -0.5); - glVertex3d(sleeperOff, sleeperDepth, 0.5); + glVertex3d(sleeperOff, 0.0, r); + glVertex3d(sleeperOff, 0.0, -r); + glVertex3d(sleeperOff, sleeperDepth, -r); + glVertex3d(sleeperOff, sleeperDepth, r); // Back glNormal3d(0.0, 0.0, -1.0); // -ve z - glVertex3d(-sleeperOff, sleeperDepth, 0.5); - glVertex3d(-sleeperOff, sleeperDepth, -0.5); - glVertex3d(-sleeperOff, 0.0, -0.5); - glVertex3d(-sleeperOff, 0.0, 0.5); + glVertex3d(-sleeperOff, sleeperDepth, r); + glVertex3d(-sleeperOff, sleeperDepth, -r); + glVertex3d(-sleeperOff, 0.0, -r); + glVertex3d(-sleeperOff, 0.0, r); glEnd(); // glBegin(GL_QUADS) @@ -91,30 +94,30 @@ void renderSleeper() static void renderOneRail() { glPushMatrix(); - glTranslated(-Track::railWidth/2.0, 0.0, 0.0); + glTranslated(-track::railWidth/2.0, 0.0, 0.0); glBegin(GL_QUADS); // Top side glNormal3d(0.0, 1.0, 0.0); - glVertex3d(0.0, Track::railHeight, 0.0); - glVertex3d(0.0, Track::railHeight, 1.0); - glVertex3d(Track::railWidth, Track::railHeight, 1.0); - glVertex3d(Track::railWidth, Track::railHeight, 0.0); + glVertex3d(0.0, track::RAIL_HEIGHT, 0.0); + glVertex3d(0.0, track::RAIL_HEIGHT, 1.0); + glVertex3d(track::railWidth, track::RAIL_HEIGHT, 1.0); + glVertex3d(track::railWidth, track::RAIL_HEIGHT, 0.0); // Outer side glNormal3d(-1.0, 0.0, 0.0); - glVertex3d(0.0, Track::railHeight, 0.0); + glVertex3d(0.0, track::RAIL_HEIGHT, 0.0); glVertex3d(0.0, 0.0, 0.0); glVertex3d(0.0, 0.0, 1.0); - glVertex3d(0.0, Track::railHeight, 1.0); + glVertex3d(0.0, track::RAIL_HEIGHT, 1.0); // Inner side glNormal3d(1.0, 0.0, 0.0); - glVertex3d(Track::railWidth, Track::railHeight, 1.0); - glVertex3d(Track::railWidth, 0.0, 1.0); - glVertex3d(Track::railWidth, 0.0, 0.0); - glVertex3d(Track::railWidth, Track::railHeight, 0.0); + glVertex3d(track::railWidth, track::RAIL_HEIGHT, 1.0); + glVertex3d(track::railWidth, 0.0, 1.0); + glVertex3d(track::railWidth, 0.0, 0.0); + glVertex3d(track::railWidth, track::RAIL_HEIGHT, 0.0); glEnd(); glPopMatrix(); @@ -125,10 +128,10 @@ void renderStraightRail() glPushMatrix(); glColor3d(0.7, 0.7, 0.7); - glTranslated(-Track::gauge/2.0, 0.0, -0.5); + glTranslated(-track::gauge/2.0, 0.0, -0.5); renderOneRail(); - glTranslated(Track::gauge, 0.0, 0.0); + glTranslated(track::gauge, 0.0, 0.0); renderOneRail(); glPopMatrix(); @@ -170,10 +173,10 @@ enum RailType { static void makeCurveRail(double baseRadius, double startAngle, double finishAngle, RailType type) { - const double edgeWidth = (1 - Track::gauge - Track::railWidth)/2.0; + const double edgeWidth = (1 - track::gauge - track::railWidth)/2.0; const double R = baseRadius - edgeWidth - - (type == OuterRail ? 0 : Track::gauge); - const double r = R - Track::railWidth; + - (type == OuterRail ? 0 : track::gauge); + const double r = R - track::railWidth; const double step = 0.1; @@ -278,7 +281,7 @@ void renderCurvedTrack(int baseRadius, double startAngle, double endAngle) makeCurveRail(baseRadiusD, startAngle, endAngle, InnerRail); const double length = (endAngle - startAngle) * baseRadius; - const int numSleepers = length * Track::sleepersPerUnit; + const int numSleepers = length * track::sleepersPerUnit; const double sleeperAngle = ((endAngle - startAngle) / numSleepers) * (180.0 / M_PI); diff --git a/src/Train.cpp b/src/Train.cpp index cc0f48a..405e4ad 100644 --- a/src/Train.cpp +++ b/src/Train.cpp @@ -18,6 +18,7 @@ #include "ITrain.hpp" #include "IRollingStock.hpp" #include "ILogger.hpp" +#include "TrackCommon.hpp" #include <stdexcept> @@ -107,6 +108,7 @@ void Train::render() const glPushMatrix(); myTransformer(mySegmentDelta); + glTranslatef(0.0f, track::RAIL_HEIGHT, 0.0f); myEngine->render(); glPopMatrix(); -- 2.39.5