X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Flayout.cpp;h=0aa5333d36238779b8e49bc02fdf1ae67702b363;hb=eb8b919a1a224c0d6f206d1d29a9b4b8c3a0cac8;hp=fe21881a2e4ab46a5f7f1e3b6a6e48c75bf7c2af;hpb=08dea8dfcf923e9296bcd3910455540895d0439b;p=r2c2.git diff --git a/source/libr2c2/layout.cpp b/source/libr2c2/layout.cpp index fe21881..0aa5333 100644 --- a/source/libr2c2/layout.cpp +++ b/source/libr2c2/layout.cpp @@ -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);