From b59becedd2208995c29e63bec68410df9aee54b5 Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sun, 28 Mar 2010 09:48:47 +0100 Subject: [PATCH] Only do track transforms in one place --- src/CrossoverTrack.cpp | 7 +++++-- src/CurvedTrack.cpp | 5 ++++- src/Map.cpp | 5 ----- src/Points.cpp | 5 ++++- src/SBend.cpp | 5 ++++- src/SlopeTrack.cpp | 7 +++++-- src/StraightTrack.cpp | 7 +++++-- 7 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/CrossoverTrack.cpp b/src/CrossoverTrack.cpp index f544f64..f60cb98 100644 --- a/src/CrossoverTrack.cpp +++ b/src/CrossoverTrack.cpp @@ -66,11 +66,14 @@ private: void CrossoverTrack::render() const { - // Render the y-going rails and sleepers glPushMatrix(); - glTranslatef(0.0f, height, 0.0f); + glTranslatef( + static_cast(myX), + height, + static_cast(myY)); + // Render the y-going rails and sleepers renderStraightRail(); glRotated(90.0, 0.0, 1.0, 0.0); diff --git a/src/CurvedTrack.cpp b/src/CurvedTrack.cpp index 5e07424..713662c 100644 --- a/src/CurvedTrack.cpp +++ b/src/CurvedTrack.cpp @@ -302,7 +302,10 @@ void CurvedTrack::render() const { glPushMatrix(); - glTranslatef(0.0f, height, 0.0f); + glTranslatef( + static_cast(origin.x), + height, + static_cast(origin.y)); renderCurvedTrack(baseRadius, startAngle, finishAngle); diff --git a/src/Map.cpp b/src/Map.cpp index 19a53e1..eb6f7c7 100644 --- a/src/Map.cpp +++ b/src/Map.cpp @@ -757,12 +757,7 @@ void Map::renderSector(IGraphicsPtr aContext, int id, // Draw the track, if any Tile& tile = tileAt(x, y); if (tile.track && tile.track->needsRendering(frameNum)) { - glPushMatrix(); - glTranslated(static_cast(tile.track->originX()), 0, - static_cast(tile.track->originY())); tile.track->get()->render(); - glPopMatrix(); - tile.track->renderedOn(frameNum); #if 0 diff --git a/src/Points.cpp b/src/Points.cpp index 137ce10..18d0523 100644 --- a/src/Points.cpp +++ b/src/Points.cpp @@ -180,7 +180,10 @@ void Points::render() const glPushMatrix(); - glTranslatef(0.0f, height, 0.0f); + glTranslatef( + static_cast(myX), + height, + static_cast(myY)); if (myAxis == -axis::X) glRotatef(180.0f, 0.0f, 1.0f, 0.0f); diff --git a/src/SBend.cpp b/src/SBend.cpp index c12e956..218834a 100644 --- a/src/SBend.cpp +++ b/src/SBend.cpp @@ -101,7 +101,10 @@ void SBend::render() const { glPushMatrix(); - glTranslatef(0.0f, height, 0.0f); + glTranslatef( + static_cast(origin.x), + height, + static_cast(origin.y)); if (axis == axis::Y) glRotatef(-90.0f, 0.0f, 1.0f, 0.0f); diff --git a/src/SlopeTrack.cpp b/src/SlopeTrack.cpp index 8c31ae7..c6f83f7 100644 --- a/src/SlopeTrack.cpp +++ b/src/SlopeTrack.cpp @@ -105,8 +105,11 @@ SlopeTrack::SlopeTrack(track::Direction axis, Vector slope, void SlopeTrack::render() const { glPushMatrix(); - - glTranslatef(0.0f, height, 0.0f); + + glTranslatef( + static_cast(origin.x), + height, + static_cast(origin.y)); if (axis == axis::Y) glRotatef(-90.0f, 0.0f, 1.0f, 0.0f); diff --git a/src/StraightTrack.cpp b/src/StraightTrack.cpp index bd9024e..e410c5b 100644 --- a/src/StraightTrack.cpp +++ b/src/StraightTrack.cpp @@ -212,8 +212,11 @@ Connection StraightTrack::nextPosition(const track::TravelToken& aToken) const void StraightTrack::render() const { glPushMatrix(); - - glTranslatef(0.0f, height, 0.0f); + + glTranslatef( + static_cast(origin.x), + height, + static_cast(origin.y)); if (direction == axis::X) glRotated(90.0, 0.0, 1.0, 0.0); -- 2.39.2