struct TrainRoutingInfo
{
Train *train;
+ float length;
float speed;
Block *first_noncritical;
TrainRouter *router;
Msp::Time::TimeDelta delay;
Msp::Time::TimeDelta duration;
unsigned waypoint;
+ float travel_multiplier;
float distance_traveled;
float remaining_estimate;
Msp::Time::TimeDelta wait_time;
void advance(float);
void advance(const Msp::Time::TimeDelta &);
void advance_track(unsigned);
+ void set_path(unsigned);
void update_estimate();
bool is_viable() const;
};
struct RoutingStep
{
Msp::Time::TimeDelta time;
- Msp::Time::TimeDelta penalty;
Msp::Time::TimeDelta cost_estimate;
+ bool preferred;
std::vector<TrainRoutingState> trains;
const RoutingStep *prev;
std::list<RoutingStep> steps;
std::list<RoutingStep> queue;
const RoutingStep *goal;
+ Msp::Time::TimeDelta path_switch_bias;
Msp::Time::TimeDelta timeout;
Result result;
PlanningThread *thread;