X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Ftracktype.cpp;h=1a898d4cd5383c21e0104fe8a5bfef7758c45188;hb=47bff0c8939de3ae20b5ced1ee2f6a264397dcee;hp=94a941a983f94fcd0392d4bb0b2237d5e32f60e2;hpb=47341c72a70e6cf9d8e963705a50197bbc20a87d;p=r2c2.git diff --git a/source/3d/tracktype.cpp b/source/3d/tracktype.cpp index 94a941a..1a898d4 100644 --- a/source/3d/tracktype.cpp +++ b/source/3d/tracktype.cpp @@ -151,18 +151,15 @@ void TrackType3D::render(const GL::Tag &tag) const void TrackType3D::build_part(const TrackPart &part, const Profile &profile, const Point &offset, GL::MeshBuilder &bld, unsigned &base_index) { - unsigned nsegs = (part.radius ? static_cast(part.length*16)+1 : 1); - float plen = part.length; - if(part.radius) - plen *= abs(part.radius); + float plen = part.get_length(); + unsigned nsegs = (part.is_curved() ? static_cast(plen*16)+1 : 1); unsigned n_points = profile.get_n_points(); for(unsigned i=0; i<=nsegs; ++i) { - float a = part.dir+(part.radius ? i*plen/nsegs/part.radius : 0); - float c = cos(a); - float s = sin(a); - Point basep = part.get_point(i*plen/nsegs); + TrackPoint basep = part.get_point(i*plen/nsegs); + float c = cos(basep.dir); + float s = sin(basep.dir); Point p; for(unsigned j=0; j0) bld.vertex(p.x, p.y, p.z);