- update shadow's driver

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@6192 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 0c1c5699e197e649c89f2ca5bb0101c26c4808a9
Former-commit-id: df1356c81f246f622d12642ed102363061d3e16c
This commit is contained in:
torcs-ng 2015-10-25 23:20:18 +00:00
parent 2372e4a7f2
commit 8ac9ebcc7c
4 changed files with 84 additions and 6 deletions

View file

@ -60,7 +60,12 @@ CarModel::CarModel()
KZ_SCALE(0),
BUMP_FACTOR(0),
WIDTH(2)
WIDTH(2),
HASTYC(false),
TYRECONDITIONFRONT(0),
TYRECONDITIONREAR(0),
TYRETREADDEPTHFRONT(0),
TYRETREADDEPTHREAR(0)
{
}
@ -126,13 +131,16 @@ double CarModel::CalcMaxSpeed(double k, double k1, double kz, double kFriction,
double MuF = kFriction * TYRE_MU_F * MU_SCALE;
double MuR = kFriction * TYRE_MU_R * MU_SCALE;
/*if (oDriver->oCarHasTYC)
if (HASTYC)
{
double TcF = oDriver->TyreConditionFront();
double TcR = oDriver->TyreConditionRear();
Mu = MIN(TcF*MuF,TcR*MuR) / oTmpCarParam->oSkill;
double TcF = TYRECONDITIONFRONT;
double TcR = TYRECONDITIONREAR;
MuF = TcF * MuF;
MuR = TcR * MuR;
Mu = MIN(MuF, MuR) / SKILL;
}
else*/
else
Mu = MIN(MuF, MuR); // oTmpCarParam->oSkill;
Den = (AbsCrv - ScaleBump * kz) - (CA_FW * MuF + CA_RW * MuR
@ -247,6 +255,17 @@ double CarModel::CalcBreaking(double k0, double kz0, double k1, double kz1, doub
MU = (MU_F + MU_R) * 0.5;
}
if (HASTYC)
{
double TcF = TYRECONDITIONFRONT;
double TcR = TYRECONDITIONREAR;
MU_F = TcF * MU_F;
MU_R = TcR * MU_R;
MU = MIN(MU_F, MU_R) / SKILL;
}
else
MU = MIN(MU_F, MU_R); // oTmpCarParam->oSkill;
double CD = CD_BODY * (1.0 + DAMAGE / 10000.0) + CD_WING;
double Gdown = GRAVITY * cs * cs2;

View file

@ -69,6 +69,11 @@ public:
double KZ_SCALE; // bump sensitivity.
double BUMP_FACTOR; // bump sensitivity factor.
double WIDTH; // width of car (m).
bool HASTYC;
double TYRECONDITIONFRONT;
double TYRECONDITIONREAR;
double TYRETREADDEPTHFRONT;
double TYRETREADDEPTHREAR;
};
#endif

View file

@ -689,6 +689,17 @@ void TDriver::NewRace( tCarElt* pCar, tSituation* pS )
initWheelPos();
initBrake();
if(HasTYC)
{
m_cm.HASTYC = true;
m_cm.TYRECONDITIONFRONT = TyreConditionFront();
m_cm.TYRECONDITIONREAR = TyreConditionRear();
m_cm.TYRETREADDEPTHFRONT = TyreTreadDepthFront();
m_cm.TYRETREADDEPTHREAR = TyreTreadDepthRear();
}
else
m_cm.HASTYC = false;
m_cm.BRAKEFORCE = BrakeForce;
m_cm.FUEL = 0;//pCar->_fuel;
@ -1511,6 +1522,20 @@ void TDriver::Drive( tSituation* s )
{
m_cm.FUEL = 5 * floor(carFuel / 5);
m_cm.DAMAGE = car->_dammage;
if(HasTYC)
{
m_cm.TYRECONDITIONFRONT = TyreConditionFront();
m_cm.TYRECONDITIONREAR = TyreConditionRear();
m_cm.TYRETREADDEPTHFRONT = TyreTreadDepthFront();
m_cm.TYRETREADDEPTHREAR = TyreTreadDepthRear();
m_cm2.TYRECONDITIONFRONT = TyreConditionFront();
m_cm2.TYRECONDITIONREAR = TyreConditionRear();
m_cm2.TYRETREADDEPTHFRONT = TyreTreadDepthFront();
m_cm2.TYRETREADDEPTHREAR = TyreTreadDepthRear();
}
m_cm2.FUEL = m_cm.FUEL;
m_cm2.DAMAGE = m_cm.DAMAGE;
@ -3478,3 +3503,28 @@ bool TDriver::CheckPitSharing()
return false;
}
}
double TDriver::TyreConditionFront()
{
return MIN(car->_tyreCondition(0), car->_tyreCondition(1));
}
double TDriver::TyreConditionRear()
{
return MIN(car->_tyreCondition(2), car->_tyreCondition(3));
}
double TDriver::TyreTreadDepthFront()
{
double Right = (car->_tyreTreadDepth(0) - car->_tyreCritTreadDepth(0));
double Left = (car->_tyreTreadDepth(1) - car->_tyreCritTreadDepth(1));
return 100 * MIN(Right, Left);
}
double TDriver::TyreTreadDepthRear()
{
double Right = (car->_tyreTreadDepth(2) - car->_tyreCritTreadDepth(2));
double Left = (car->_tyreTreadDepth(3) - car->_tyreCritTreadDepth(3));
return 100 * MIN(Right, Left);
}

View file

@ -273,6 +273,10 @@ public:
void LearnBraking(double Pos); // Learn braking parameters
void DetectFlight();
double FlightControl(double Steer); // Prepare landing
double TyreConditionFront();
double TyreConditionRear();
double TyreTreadDepthFront();
double TyreTreadDepthRear();
bool m_UseFilterAccel;
bool m_UseAccelOut;