Fixes for compiling under Windows (const char * errors), and my "driven wheel slip creating smoke" patch, probably needs a little work. Accelerate a powerful car with steer on full lock (in other words, do a "donut") and you'll now see smoke from the tires whereas before you didn't.

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

Former-commit-id: 27b46ae34a35bff6f8db6a68c21742664fb19893
Former-commit-id: 6d5a6f892463ddf6461104af227832e49a009460
This commit is contained in:
andrewsumner 2008-11-18 23:42:30 +00:00
parent 3cb080c03b
commit f1fdd21d89
4 changed files with 15 additions and 10 deletions

View file

@ -244,7 +244,7 @@ cGrBoard::grDrawGauge(tdble X1, tdble Y1, tdble H, float *clr1, float *clr2, tdb
glVertex2f(X1 + THNSSFG, Y1 + curH);
glVertex2f(X1 - THNSSFG, Y1 + curH);
glEnd();
GfuiPrintString(title, grBlue, GFUI_FONT_MEDIUM, (int)X1, (int)(Y1 - THNSSBG - GfuiFontHeight(GFUI_FONT_MEDIUM)), GFUI_ALIGN_HC_VB);
GfuiPrintString((char *)title, grBlue, GFUI_FONT_MEDIUM, (int)X1, (int)(Y1 - THNSSBG - GfuiFontHeight(GFUI_FONT_MEDIUM)), GFUI_ALIGN_HC_VB);
}
void

View file

@ -472,7 +472,7 @@ grInitShadow(tCarElt *car)
grCarInfo[car->index].shadowBase = new ssgVtxTableShadow(GL_TRIANGLE_STRIP, shd_vtx, shd_nrm, shd_tex, shd_clr);
grMipMap = 0;
grCarInfo[car->index].shadowBase->setState(grSsgLoadTexState(shdTexName));
grCarInfo[car->index].shadowBase->setState(grSsgLoadTexState((char *)shdTexName));
grCarInfo[car->index].shadowCurr = (ssgVtxTableShadow *)grCarInfo[car->index].shadowBase->clone(SSG_CLONE_GEOMETRY);
grCarInfo[car->index].shadowAnchor->addKid(grCarInfo[car->index].shadowCurr);
ShadowAnchor->addKid(grCarInfo[car->index].shadowAnchor);
@ -598,6 +598,7 @@ grInitCar(tCarElt *car)
lg += sprintf(grFilePath + lg, "drivers/%s/%d/%s;", car->_modName, car->_driverIndex, car->_carName);
lg += sprintf(grFilePath + lg, "drivers/%s/%d;", car->_modName, car->_driverIndex);
lg += sprintf(grFilePath + lg, "drivers/%s/%s;", car->_modName, car->_carName);
lg += sprintf(grFilePath + lg, "drivers/%d/%s;", car->_driverIndex, car->_carName);
lg += sprintf(grFilePath + lg, "drivers/%s;", car->_modName);
lg += sprintf(grFilePath + lg, "cars/%s", car->_carName);
@ -605,7 +606,7 @@ grInitCar(tCarElt *car)
if (strlen(param) != 0) {
grGammaValue = 1.8;
grMipMap = 0;
grCarInfo[index].wheelTexture = grSsgLoadTexState(param);
grCarInfo[index].wheelTexture = grSsgLoadTexState((char *)param);
/*if (grCarInfo[index].wheelTexture->getRef() > 0) {
grCarInfo[index].wheelTexture->deRef();
}*/

View file

@ -295,10 +295,12 @@ void grAddSmoke(tCarElt *car, double t)
smoke_life_coefficient = smoke_life_coefficient * (1.0f - urandom()*urandom());
tdble spd_fx=tanh(0.001f*car->_reaction[i])*smoke_speed_coefficient*sqrt(spd2);
if (car->_skid[i] + 0.025f*urandom()*spd_fx>urandom() + threshold) {// instead of 0.3, to randomize
float init_speed_z = 0.1f;
float stretch_factor = 0.5f;
double slip = MAX(0.0, ((car->_wheelSpinVel(i) * car->_wheelRadius(i)) - fabs(car->_speed_x)) - 10.0);
if (car->_skid[i] + 0.025f*urandom()*spd_fx>urandom() + threshold || // instead of 0.3, to randomize
slip > 0.0) // smoke from driven wheel spin
{
float init_speed_z = 0.1f + (float) (slip/20);
float stretch_factor = 0.2f:
tdble sinCarYaw = sin(car->_yaw);
tdble cosCarYaw = cos(car->_yaw);
@ -321,6 +323,8 @@ void grAddSmoke(tCarElt *car, double t)
tmp->smoke->vvy = cosCarYaw * car->_wheelSlipSide(i);
tmp->smoke->vvx += cosCarYaw * car->_wheelSlipAccel(i);
tmp->smoke->vvy += sinCarYaw * car->_wheelSlipAccel(i);
tmp->smoke->vvy += cosCarYaw * slip;
tmp->smoke->vvy += sinCarYaw * slip;
tmp->smoke->vvz = init_speed_z;
@ -331,7 +335,7 @@ void grAddSmoke(tCarElt *car, double t)
//printf("%f\n", car->_reaction[i]);
tmp->smoke->max_life = grSmokeLife *
(car->_skid[i]*sqrt(spd2)+urandom()*spd_fx)/ smoke_life_coefficient;
((car->_skid[i])*sqrt(spd2)+urandom()*spd_fx)/ smoke_life_coefficient;
for (int c = 0; c < 3; c++) {
tmp->smoke->cur_col[c] = cur_clr[c];
}
@ -342,7 +346,7 @@ void grAddSmoke(tCarElt *car, double t)
tmp->smoke->sizez = VZ_INIT + 0.1f * spd_fx;
tmp->smoke->init_alpha = 1.0/(1.0+0.1*spd_fx);
tmp->smoke->vexp = V_EXPANSION+(car->_skid[i]+.1*spd_fx)*(((float)rand()/(float)RAND_MAX));
tmp->smoke->vexp = V_EXPANSION+((car->_skid[i]+slip/3)+.1*spd_fx)*(((float)rand()/(float)RAND_MAX));
tmp->smoke->smokeType = SMOKE_TYPE_TIRE;
tmp->smoke->smokeTypeStep = 0;
tmp->next = NULL;

View file

@ -55,7 +55,7 @@ void grInitSound(tSituation* s, int ncars)
char fnbuf[1024];
sprintf(fnbuf, "%s%s", GetLocalDir(), GR_SOUND_PARM_CFG);
void *paramHandle = GfParmReadFile(fnbuf, GFPARM_RMODE_REREAD | GFPARM_RMODE_CREAT);
const char *optionName = GfParmGetStr(paramHandle, GR_SCT_SOUND, GR_ATT_SOUND_STATE, soundOpenALStr);
const char *optionName = GfParmGetStr(paramHandle, GR_SCT_SOUND, GR_ATT_SOUND_STATE, (char *)soundOpenALStr);
float global_volume = GfParmGetNum(paramHandle, GR_SCT_SOUND, GR_ATT_SOUND_VOLUME, "%", 100.0f);
if (!strcmp(optionName, soundDisabledStr)) {
sound_mode = DISABLED;