X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftrain.cpp;h=ba1a861b9e24ec75f14a91049d8d3a76b54fc29f;hb=e77b01f9fed6d5f653dbd0123f0f1f61a13c3dfa;hp=00730c8e15e08fd048b35b137d51c7adcac51d91;hpb=b14059de03324aecde3efc649293d98ce5b7aaf2;p=r2c2.git diff --git a/source/libr2c2/train.cpp b/source/libr2c2/train.cpp index 00730c8..ba1a861 100644 --- a/source/libr2c2/train.cpp +++ b/source/libr2c2/train.cpp @@ -583,6 +583,7 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) (*i)->tick(t, dt); controller->tick(dt); float speed = controller->get_speed(); + bool moving = speed>0; if(controller->get_reverse()!=reverse) { @@ -609,7 +610,7 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) speed = speed_quantizer->get_speed(current_speed_step); } - if(speed) + if(moving) { if(!active) set_active(true); @@ -762,7 +763,7 @@ void Train::block_state_changed(Block &block, Block::State state) // Compute speed and update related state float travel_time_secs = (Time::now()-last_entry_time)/Time::sec; - if(pure_speed && speed_quantizer && current_speed_step>0) + if(pure_speed && speed_quantizer && current_speed_step>0 && travel_time_secs>=2) speed_quantizer->learn(current_speed_step, travel_dist/travel_time_secs, travel_time_secs); travel_dist = 0;