X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fallocation.cpp;h=cbf2f85e31d55ac72336f52c215c5d321a58cd80;hb=9b8a32cf7371bc5fae8ce239a212469511c459e6;hp=4bafb111c7e60e02cd018960d599d9c24796a216;hpb=5116fff210cdc3f0fbdae13046cc60450aad5e8f;p=r2c2.git diff --git a/source/3d/allocation.cpp b/source/3d/allocation.cpp index 4bafb11..cbf2f85 100644 --- a/source/3d/allocation.cpp +++ b/source/3d/allocation.cpp @@ -21,31 +21,34 @@ void Allocation3D::set_color(const GL::Color &c) color = c; for(PathMap::const_iterator i=paths.begin(); i!=paths.end(); ++i) { - float intensity = 0.5+train.get_block_allocator().is_block_current(*i->first)*0.5; + GL::Color block_color = get_color_for_block(*i->first); for(PathList::const_iterator j=i->second.begin(); j!=i->second.end(); ++j) - (*j)->set_color(color*intensity); + (*j)->set_color(block_color); } } -void Allocation3D::block_reserved(Block &block, Train *t) +GL::Color Allocation3D::get_color_for_block(const Block &block) const { - if(t && t!=&train) - return; + float intensity = 0.25+train.get_block_allocator().is_block_current(block)*0.75; + return color*intensity; +} - if(t) +void Allocation3D::block_reserved(Block &block, Train *t) +{ + if(t==&train) { if(paths.count(&block)) return; PathList &bpaths = paths[&block]; + GL::Color block_color = get_color_for_block(block); const Block::TrackSet &tracks = block.get_tracks(); for(Block::TrackSet::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) { - Path3D *path = new Path3D(layout.get(**i)); + Path3D *path = new Path3D(layout.get_3d(**i)); bpaths.push_back(path); path->set_layer(1); - float intensity = 0.5+train.get_block_allocator().is_block_current(block)*0.5; - path->set_color(color*intensity); + path->set_color(block_color); path->set_automatic(); } }