]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/layout.cpp
Add an option to set simulation speed
[r2c2.git] / source / libr2c2 / layout.cpp
index fe21881a2e4ab46a5f7f1e3b6a6e48c75bf7c2af..0aa5333d36238779b8e49bc02fdf1ae67702b363 100644 (file)
@@ -414,7 +414,7 @@ void Layout::remove_train(Train &t)
                signal_train_removed.emit(t);
 }
 
-void Layout::tick()
+void Layout::tick(float speed)
 {
        if(driver)
                driver->tick();
@@ -425,6 +425,15 @@ void Layout::tick()
                dt = t-last_tick;
        last_tick = t;
 
+       dt *= speed;
+       unsigned count = dt/(10*Time::msec)+1;
+       dt /= count;
+       while(count--)
+               step(dt);
+}
+
+void Layout::step(const Time::TimeDelta &dt)
+{
        if(!driver || !driver->is_halted())
                clock.tick(dt);