target_speed.set(v);
if(!blocked)
next_model->set_control("speed", target_speed.value);
+
+ signal_control_changed.emit(n, target_speed.value);
}
else
next_model->set_control(n, v);
return next_model->get_speed();
}
+bool AIControl::get_reverse() const
+{
+ if(float ns = next_model->get_speed())
+ return ns<0;
+ else
+ return target_speed.value<0;
+}
+
float AIControl::get_braking_distance() const
{
return next_model->get_braking_distance();
train.set_active(false);
}
+void AIControl::control_changed(const string &n, float v)
+{
+ if(n!="speed")
+ signal_control_changed.emit(n, v);
+}
+
void AIControl::arrived()
{
set_control("speed", 0);