Made the skidding parameters configurable in stk_config.data

(and on a per kart basis as well, so each kart can skid differently).


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@2676 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2008-12-15 03:56:54 +00:00
parent 5f0dd7ba4c
commit 28d119a9b0
4 changed files with 45 additions and 4 deletions

View File

@ -67,6 +67,15 @@
(nitro-power-boost 3 ) ;; increase in engine power, i.e. 1=plus 100%
;; Skidding related parameters:
(skid-increase 1.05) ;; Multiplicative increase of skidding factor
;; in each frame.
(skid-decrease 0.95) ;; Multiplicative decrease of skidding factor
;; in each frame.
(skid-max 2.0 ) ;; Maximum skidding factor = maximum increase
;; of steering angle.
(skid-visual 0.16) ;; Additional graphical rotation of kart.
;; Bullet physics attributes
(brake-factor 2.75 )
;; Defines the smallest turn radius at lowest speed (4.64 m at

View File

@ -762,12 +762,13 @@ void Kart::updatePhysics (float dt)
if(m_controls.jump)
{
m_skidding*= 1.05f;
if(m_skidding>2.0f) m_skidding=2.0f;
m_skidding*= m_kart_properties->getSkidIncrease();
if(m_skidding>m_kart_properties->getMaxSkid())
m_skidding=m_kart_properties->getMaxSkid();
}
else if(m_skidding>1.0f)
{
m_skidding *= 0.95f;
m_skidding *= m_kart_properties->getSkidDecrease();
if(m_skidding<1.0f) m_skidding=1.0f;
}
if(m_skidding>1.0f)
@ -967,7 +968,8 @@ void Kart::updateGraphics(const Vec3& off_xyz, const Vec3& off_hpr)
? getSpeed()*5.0f : 0);
float speed_ratio = getSpeed()/getMaxSpeed();
float offset_heading = getSteerPercent()*0.05f*3.1415926f * speed_ratio * m_skidding*m_skidding;
float offset_heading = getSteerPercent()*m_kart_properties->getSkidVisual()
* speed_ratio * m_skidding*m_skidding;
Moveable::updateGraphics(center_shift, Vec3(offset_heading, offset_pitch, 0));
} // updateGraphics

View File

@ -70,6 +70,7 @@ KartProperties::KartProperties() : m_icon_material(0)
m_max_speed_turn = m_angle_at_max =
m_rubber_band_max_length = m_rubber_band_force =
m_rubber_band_duration =
m_skid_decrease = m_skid_increase = m_skid_visual = m_skid_max =
m_camera_max_accel = m_camera_max_brake =
m_camera_distance = UNDEFINED;
m_gravity_center_shift = Vec3(UNDEFINED);
@ -250,6 +251,11 @@ void KartProperties::getAllData(const lisp::Lisp* lisp)
lisp->get("rubber-band-force", m_rubber_band_force );
lisp->get("rubber-band-duration", m_rubber_band_duration );
lisp->get("skid-increase", m_skid_increase );
lisp->get("skid-decrease", m_skid_decrease );
lisp->get("skid-max", m_skid_max );
lisp->get("skid-visual", m_skid_visual );
lisp->getVector("groups", m_groups );
// getVector appends to existing vectors, so a new one must be used to load
@ -332,6 +338,11 @@ void KartProperties::checkAllSet(const std::string &filename)
CHECK_NEG(m_rubber_band_max_length, "rubber-band-max-length" );
CHECK_NEG(m_rubber_band_force, "rubber-band-force" );
CHECK_NEG(m_rubber_band_duration, "rubber-band-duration" );
CHECK_NEG(m_skid_decrease, "skid-decrease" );
CHECK_NEG(m_skid_increase, "skid-increase" );
CHECK_NEG(m_skid_max, "skid-max" );
CHECK_NEG(m_skid_visual, "skid-visual" );
CHECK_NEG(m_camera_max_accel, "camera-max-accel" );
CHECK_NEG(m_camera_max_brake, "camera-max-brake" );
CHECK_NEG(m_camera_distance, "camera-distance" );

View File

@ -127,6 +127,15 @@ protected:
float m_upright_tolerance;
float m_upright_max_force;
float m_skid_visual; /**< Additional rotation of 3d model
* when skidding. */
float m_skid_max; /**< Maximal increase of steering when
* skidding. */
float m_skid_increase; /**< Skidding is multiplied by this when
* skidding to increase to
* m_skid_increase. */
float m_skid_decrease; /**< Skidding is multiplied by this when
* not skidding to decrease to 1.0. */
// Camera related setting
// ----------------------
float m_camera_max_accel; // maximum acceleration of camera
@ -199,6 +208,16 @@ public:
float getRubberBandForce () const {return m_rubber_band_force; }
/** Returns the duration a rubber band is active for. */
float getRubberBandDuration () const {return m_rubber_band_duration; }
/** Returns additional rotation of 3d model when skidding. */
float getSkidVisual () const {return m_skid_visual; }
/** Returns the maximum factor by which the steering angle can be increased. */
float getMaxSkid () const {return m_skid_max; }
/** Returns the factor by which m_skidding is multiplied when the kart is
* skidding to increase it to the maximum. */
float getSkidIncrease () const {return m_skid_increase; }
/** Returns the factor by which m_skidding is multiplied when the kart is
* not skidding to decrease it back to 1.0f . */
float getSkidDecrease () const {return m_skid_decrease; }
const std::vector<float>&
getGearSwitchRatio () const {return m_gear_switch_ratio; }
const std::vector<float>&