]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/allocation.cpp
Make some internal colors darker to match linear color space
[r2c2.git] / source / 3d / allocation.cpp
index 4bafb111c7e60e02cd018960d599d9c24796a216..cbf2f85e31d55ac72336f52c215c5d321a58cd80 100644 (file)
@@ -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<Track3D>(**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();
                }
        }