// Start a new race. void Driver::newRace(tCarElt* car, tSituation *s) { float deltaTime = (float) RCM_MAX_DT_ROBOTS; MAX_UNSTUCK_COUNT = int(UNSTUCK_TIME_LIMIT/deltaTime); OVERTAKE_OFFSET_INC = OVERTAKE_OFFSET_SPEED*deltaTime; stuck = 0; alone = 1; clutchtime = 0.0f; oldlookahead = 0.0f; this->car = car; CARMASS = GfParmGetNum(car->_carHandle, SECT_CAR, PRM_MASS, NULL, 1000.0f); myoffset = 0.0f; initCa(); initCw(); initTireMu(); initTCLfilter(); // Create just one instance of cardata shared by all drivers. if (cardata == NULL) { cardata = new Cardata(s); } mycardata = cardata->findCar(car); currentsimtime = s->currentTime; // initialize the list of opponents. opponents = new Opponents(s, this, cardata); opponent = opponents->getOpponentPtr(); // Set team mate. const char *teammate = GfParmGetStr(car->_carHandle, BT_SECT_PRIV, BT_ATT_TEAMMATE, NULL); if (teammate != NULL) { opponents->setTeamMate(teammate); } // Initialize radius of segments. radius = new float[track->nseg]; computeRadius(radius); learn = new SegLearn(track, s, INDEX); // create the pit object. pit = new Pit(s, this); }
/* Start a new race. */ void Driver::newRace(tCarElt* car, tSituation *s) { float deltaTime = RCM_MAX_DT_ROBOTS; MAX_UNSTUCK_COUNT = int(UNSTUCK_TIME_LIMIT/deltaTime); OVERTAKE_OFFSET_INC = OVERTAKE_OFFSET_SPEED*deltaTime; stuck = 0; lastsegtype = TR_STR; this->car = car; CARMASS = GfParmGetNum(car->_carHandle, SECT_CAR, PRM_MASS, NULL, 1000.0); myoffset = 0.0; initCa(); initCw(); initTireMu(); initTCLfilter(); /* initialize the list of opponents */ opponents = new Opponents(s, this); opponent = opponents->getOpponentPtr(); /* create the pit object */ pit = new Pit(s, this); }