/** This adjusts the top speed using increaseMaxSpeed, but additionally * causes an instant speed boost, which can be smaller than add-max-speed. * (e.g. a zipper can give an instant boost of 5 m/s, but over time would * allow the speed to go up by 10 m/s). Note that bullet does not restrict * speed (e.g. by simulating air resistance), so without capping the speed * (which is done my this object) the speed would go arbitrary high over time * \param category The category for which the speed is increased. * \param add_max_speed Increase of the maximum allowed speed. * \param speed_boost An instant speed increase for this kart. * \param engine_force Additional engine force. * \param duration Duration of the increased speed. * \param fade_out_time How long the maximum speed will fade out linearly. */ void MaxSpeed::instantSpeedIncrease(unsigned int category, float add_max_speed, float speed_boost, float engine_force, float duration, float fade_out_time) { increaseMaxSpeed(category, add_max_speed, engine_force, duration, fade_out_time); // This will result in all max speed settings updated, but no // changes to any slow downs since dt=0 update(0); float speed = std::min(m_kart->getSpeed()+ speed_boost, MaxSpeed::getCurrentMaxSpeed() ); m_kart->getVehicle()->instantSpeedIncreaseTo(speed); }
/** This adjusts the top speed using increaseMaxSpeed, but additionally * causes an instant speed boost, which can be smaller than add-max-speed. * (e.g. a zipper can give an instant boost of 5 m/s, but over time would * allow the speed to go up by 10 m/s). Note that bullet does not restrict * speed (e.g. by simulating air resistance), so without capping the speed * (which is done my this object) the speed would go arbitrary high over time * \param category The category for which the speed is increased. * \param add_max_speed Increase of the maximum allowed speed. * \param speed_boost An instant speed increase for this kart. * \param engine_force Additional engine force. * \param duration Duration of the increased speed. * \param fade_out_time How long the maximum speed will fade out linearly. */ void MaxSpeed::instantSpeedIncrease(unsigned int category, float add_max_speed, float speed_boost, float engine_force, float duration, float fade_out_time) { increaseMaxSpeed(category, add_max_speed, engine_force, duration, fade_out_time); // This will result in all max speed settings updated, but no // changes to any slow downs since dt=0 update(0); float speed = std::min(m_kart->getSpeed()+ speed_boost, getCurrentMaxSpeed() ); // If there is a min_speed defined, make sure that the kart is still // fast enough (otherwise e.g. on easy difficulty even with zipper // the speed might be too low for certain jumps). if(speed < m_min_speed) speed = m_min_speed; m_kart->getVehicle()->instantSpeedIncreaseTo(speed); }