From 9581bff67f84a4a8b309c56380fa0130919112b4 Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sat, 14 May 2011 19:29:52 +0100 Subject: [PATCH] Rename GenTrack to SplineTrack --- include/ITrackSegment.hpp | 14 +++--- src/Editor.cpp | 6 +-- src/Map.cpp | 30 ++++++------- src/{GenTrack.cpp => SplineTrack.cpp} | 63 ++++++++++++++------------- 4 files changed, 57 insertions(+), 56 deletions(-) rename src/{GenTrack.cpp => SplineTrack.cpp} (85%) diff --git a/include/ITrackSegment.hpp b/include/ITrackSegment.hpp index f9351d4..d8f88d2 100644 --- a/include/ITrackSegment.hpp +++ b/include/ITrackSegment.hpp @@ -110,11 +110,11 @@ struct ITrackSegment : IXMLSerialisable { // Get a travel token for this track segment starting at a particular // position and moving in a particular direciton - virtual track::TravelToken get_travel_token(track::Position a_position, - track::Direction a_direction) const = 0; + virtual track::TravelToken get_travel_token(track::Position pos, + track::Direction dir) const = 0; // True if a train can travel in this direction along the track - virtual bool is_valid_direction(const track::Direction& a_direction) const = 0; + virtual bool is_valid_direction(const track::Direction& dir) const = 0; // Return the position of the next segment of track and the // orientation of the train. @@ -167,9 +167,9 @@ ITrackSegmentPtr make_crossover_track(); ITrackSegmentPtr make_points(track::Direction a_direction, bool reflect); ITrackSegmentPtr make_slope_track(track::Direction axis, Vector slope, Vector slope_before, Vector slope_after); -ITrackSegmentPtr makeSBend(track::Direction dir, int straight, int off); -ITrackSegmentPtr make_gen_track(Vector delta, - track::Direction entry_dir, - track::Direction exit_dir); +ITrackSegmentPtr make_s_bend(track::Direction dir, int straight, int off); +ITrackSegmentPtr make_spline_track(Vector delta, + track::Direction entry_dir, + track::Direction exit_dir); #endif diff --git a/src/Editor.cpp b/src/Editor.cpp index 4c866e6..27748ec 100644 --- a/src/Editor.cpp +++ b/src/Editor.cpp @@ -473,9 +473,9 @@ void Editor::draw_dragged_track() VectorI off = make_vector(delta.x, delta.y, 0); - ITrackSegmentPtr track = make_gen_track(off, - start_dir, - end_dir); + ITrackSegmentPtr track = make_spline_track(off, + start_dir, + end_dir); Point where = drag_begin; track->set_origin(where.x, where.y, map->height_at(where)); diff --git a/src/Map.cpp b/src/Map.cpp index de2d0e4..3306fdb 100644 --- a/src/Map.cpp +++ b/src/Map.cpp @@ -1830,10 +1830,10 @@ void MapLoader::handle_s_bend_track(const AttributeSet attrs) ? make_vector(straight - 1, offset, 0) : make_vector(offset, straight - 1, 0); - my_map->set_track_at(tile, make_gen_track(delta, axis, axis)); + my_map->set_track_at(tile, make_spline_track(delta, axis, axis)); #else // Legacy S-bend track - my_map->set_track_at(tile, makeSBend(axis, straight, offset)); + my_map->set_track_at(tile, make_s_bend(axis, straight, offset)); #endif } @@ -1866,24 +1866,24 @@ void MapLoader::handle_curved_track(const AttributeSet& attrs) switch (start_angle) { case 0: - track = make_gen_track(make_vector(off, -off, 0), - make_vector(1, 0, 0), - make_vector(0, 0, -1)); + track = make_spline_track(make_vector(off, -off, 0), + make_vector(1, 0, 0), + make_vector(0, 0, -1)); break; case 90: - track = make_gen_track(make_vector(-off, -off, 0), - make_vector(0, 0, -1), - make_vector(-1, 0, 0)); + track = make_spline_track(make_vector(-off, -off, 0), + make_vector(0, 0, -1), + make_vector(-1, 0, 0)); break; case 180: - track = make_gen_track(make_vector(-off, off, 0), - make_vector(-1, 0, 0), - make_vector(0, 0, 1)); + track = make_spline_track(make_vector(-off, off, 0), + make_vector(-1, 0, 0), + make_vector(0, 0, 1)); break; case 270: - track = make_gen_track(make_vector(off, off, 0), - make_vector(0, 0, 1), - make_vector(1, 0, 0)); + track = make_spline_track(make_vector(off, off, 0), + make_vector(0, 0, 1), + make_vector(1, 0, 0)); break; default: @@ -1920,7 +1920,7 @@ void MapLoader::handle_gen_track(const AttributeSet& attrs) attrs.get("exit-dir-x", exit_dir.x); attrs.get("exit-dir-y", exit_dir.z); - my_map->set_track_at(tile, make_gen_track(delta, entry_dir, exit_dir)); + my_map->set_track_at(tile, make_spline_track(delta, entry_dir, exit_dir)); } IMapPtr load_map(const string& a_res_id) diff --git a/src/GenTrack.cpp b/src/SplineTrack.cpp similarity index 85% rename from src/GenTrack.cpp rename to src/SplineTrack.cpp index 9cf0026..278c4a6 100644 --- a/src/GenTrack.cpp +++ b/src/SplineTrack.cpp @@ -25,11 +25,11 @@ #include // A generic track implementation based on Bezier curves -class GenTrack : public ITrackSegment, - private SleeperHelper, - private BezierHelper { +class SplineTrack : public ITrackSegment, + private SleeperHelper, + private BezierHelper { public: - GenTrack(Vector delta, + SplineTrack(Vector delta, track::Direction entry_dir, track::Direction exit_dir); @@ -81,11 +81,11 @@ private: static MeshCache mesh_cache; }; -GenTrack::MeshCache GenTrack::mesh_cache; +SplineTrack::MeshCache SplineTrack::mesh_cache; -GenTrack::GenTrack(Vector delta, - track::Direction entry_dir, - track::Direction exit_dir) +SplineTrack::SplineTrack(Vector delta, + track::Direction entry_dir, + track::Direction exit_dir) : delta(delta), entry_dir(entry_dir), exit_dir(exit_dir) @@ -129,7 +129,7 @@ GenTrack::GenTrack(Vector delta, bounding_polygon(bounds); } -float GenTrack::extend_from_center(track::Direction dir) const +float SplineTrack::extend_from_center(track::Direction dir) const { // Track must extend from the centre to the edge of a tile const float x_sq = static_cast(dir.x * dir.x); @@ -143,7 +143,7 @@ float GenTrack::extend_from_center(track::Direction dir) const return sqrtf(y_sq / x_sq + 1) * 0.5f; } -void GenTrack::merge(IMeshBufferPtr buf) const +void SplineTrack::merge(IMeshBufferPtr buf) const { Vector off = make_vector( static_cast(origin.x), @@ -177,7 +177,7 @@ void GenTrack::merge(IMeshBufferPtr buf) const } } -void GenTrack::render() const +void SplineTrack::render() const { #if 0 // Draw the bounding polygon @@ -215,23 +215,23 @@ void GenTrack::render() const #endif } -void GenTrack::set_origin(int x, int y, float h) +void SplineTrack::set_origin(int x, int y, float h) { origin = make_point(x, y); height = h; } -float GenTrack::segment_length(const track::TravelToken& token) const +float SplineTrack::segment_length(const track::TravelToken& token) const { return curve.length; } -bool GenTrack::is_valid_direction(const track::Direction& dir) const +bool SplineTrack::is_valid_direction(const track::Direction& dir) const { return dir == entry_dir || dir == -exit_dir; } -void GenTrack::ensure_valid_direction(track::Direction dir) const +void SplineTrack::ensure_valid_direction(track::Direction dir) const { if (!is_valid_direction(dir)) throw runtime_error( @@ -242,7 +242,8 @@ void GenTrack::ensure_valid_direction(track::Direction dir) const + " or " + boost::lexical_cast(-exit_dir) + ")"); } -track::Connection GenTrack::next_position(const track::TravelToken& token) const +track::Connection +SplineTrack::next_position(const track::TravelToken& token) const { ensure_valid_direction(token.direction); @@ -257,7 +258,7 @@ track::Connection GenTrack::next_position(const track::TravelToken& token) const } } -void GenTrack::get_endpoints(vector >& output) const +void SplineTrack::get_endpoints(vector >& output) const { output.push_back(origin); @@ -266,7 +267,7 @@ void GenTrack::get_endpoints(vector >& output) const make_point(origin.x + delta.x, origin.y + delta.y)); } -void GenTrack::get_covers(vector >& output) const +void SplineTrack::get_covers(vector >& output) const { const Point off = make_point(0.5f, 0.5f); @@ -284,7 +285,7 @@ void GenTrack::get_covers(vector >& output) const } } -bool GenTrack::point_in_polygon(const Polygon& poly, Point p) +bool SplineTrack::point_in_polygon(const Polygon& poly, Point p) { bool odd_nodes = false; const int n_sides = poly.size(); @@ -306,7 +307,7 @@ bool GenTrack::point_in_polygon(const Polygon& poly, Point p) return odd_nodes; } -void GenTrack::bounding_polygon(Polygon& poly) const +void SplineTrack::bounding_polygon(Polygon& poly) const { const float step = 0.01f; const float fudge = 0.8f; @@ -322,7 +323,7 @@ void GenTrack::bounding_polygon(Polygon& poly) const } } -void GenTrack::get_height_locked(vector >& output) const +void SplineTrack::get_height_locked(vector >& output) const { for (int x = min(0, delta.x); x <= max(0, delta.x) + 1; x++) { for (int y = min(0, delta.y); y <= max(0, delta.y) + 1; y++) { @@ -334,12 +335,12 @@ void GenTrack::get_height_locked(vector >& output) const } } -ITrackSegmentPtr GenTrack::merge_exit(Point where, track::Direction dir) +ITrackSegmentPtr SplineTrack::merge_exit(Point where, track::Direction dir) { return ITrackSegmentPtr(); } -float GenTrack::rotation_at(float curve_delta) const +float SplineTrack::rotation_at(float curve_delta) const { assert(curve_delta >= 0.0f && curve_delta <= 1.0f); @@ -358,7 +359,7 @@ float GenTrack::rotation_at(float curve_delta) const assert(false); } -void GenTrack::transform(const track::TravelToken& token, +void SplineTrack::transform(const track::TravelToken& token, float delta, bool backwards) const { assert(delta < curve.length); @@ -381,7 +382,7 @@ void GenTrack::transform(const track::TravelToken& token, glRotatef(-angle, 0.0f, 1.0f, 0.0f); } -track::TravelToken GenTrack::get_travel_token(track::Position pos, +track::TravelToken SplineTrack::get_travel_token(track::Position pos, track::Direction dir) const { using namespace placeholders; @@ -393,14 +394,14 @@ track::TravelToken GenTrack::get_travel_token(track::Position pos, track::TravelToken tok = { dir, pos, - bind(&GenTrack::transform, this, _1, _2, backwards), + bind(&SplineTrack::transform, this, _1, _2, backwards), track::flat_gradient_func, 1 }; return tok; } -xml::element GenTrack::to_xml() const +xml::element SplineTrack::to_xml() const { return xml::element("gen-track") .add_attribute("delta-x", delta.x) @@ -411,9 +412,9 @@ xml::element GenTrack::to_xml() const .add_attribute("exit-dir-y", exit_dir.z); } -ITrackSegmentPtr make_gen_track(Vector delta, - track::Direction entry_dir, - track::Direction exit_dir) +ITrackSegmentPtr make_spline_track(Vector delta, + track::Direction entry_dir, + track::Direction exit_dir) { - return ITrackSegmentPtr(new GenTrack(delta, entry_dir, exit_dir)); + return ITrackSegmentPtr(new SplineTrack(delta, entry_dir, exit_dir)); } -- 2.39.2