34 tdble gcfrl, gcrrl, gcfr;
81 for (i = 0; i < 2; i++) {
85 for (i = 0; i < 4; i++) {
99 for (i = 0; i < 2; i++) {
104 carElt->_statGC = car->
statGC;
105 carElt->_tank = car->
tank;
106 for (i = 0; i < 4; i++) {
110 for (i = 0; i < 4; i++) {
148 tdble v, R, Rv, Rm, Rx, Ry, Rz;
161 sgTransposeNegateMat4(dstInv, dst);
162 sgVec3 weight = {0.0f, 0.0f, w};
163 sgXformVec3(weight, dstInv);
164 F.
F.
x = weight[SG_X];
165 F.
F.
y = weight[SG_Y];
166 F.
F.
z = weight[SG_Z];
168 F.
M.
x = F.
M.
y = F.
M.
z = 0;
171 for (i = 0; i < 4; i++) {
194 for (i = 0; i < 2; i++) {
206 for (i = 0; i < 4; i++) {
233 sgXformVec3(accel, dst);
266 sgTransposeNegateMat4(dst);
268 sgXformVec3(vel, (
float *) &(car->
DynGCg.
vel), dst);
283 for (i = 0; i < 4; i++) {
286 sgXformVec3(dstVec, (
float *) &(wheel->
staticPos.
x), dst);
341 for (i = 0; i < 4; i++) {
345 localPos[0] = corner->
x + car->
statGC.
x;
346 localPos[1] = corner->
y + car->
statGC.
y;
347 localPos[2] = corner->
z - car->
statGC.
z;
350 sgXformVec3(dstVec, localPos, dst);
386 printf(
"-----------------------------\nCar: %d %s ---\n", car->
carElt->
index, car->
carElt->_name);
387 printf(
"Seg: %d (%s) Ts:%f Tr:%f\n",
395 printf(
"As: %f\n---\n", sqrt(car->
airSpeed2));
396 for (i = 0; i < 4; i++) {
403 printf(
"Aero Fx:%f Fz:%f Fzf=%f Fzr=%f ratio=%f\n", car->
aero.
drag / 9.81, Fzf + Fzr,
404 Fzf, Fzr, (Fzf + Fzr) / (car->
aero.
drag + 0.1) * 9.81);
void SimEngineConfig(tCar *car)
#define REAR_LFT
rear left
void SimBrakeSystemConfig(tCar *car)
void SimCarConfig(tCar *car)
static void SimCarUpdatePos(tCar *car)
#define FRNT_LFT
front left
#define FRNT_RGT
front right
cars situation used to inform the GUI and the drivers
tdble toRight
Distance (+ to left, - to right) relative to the right side of segment.
void SimCarUpdate2(tCar *car, tSituation *)
void SimTransmissionConfig(tCar *car)
#define SIGN(x)
Sign of the expression.
void SimCarUpdateWheelPos(tCar *car)
void SimWheelConfig(tCar *car, int index)
#define REAR_RGT
rear right
tdble ay
angle along y axis
void SimCarCollideZ(tCar *car)
#define RAD2DEG(x)
Radian to degree conversion.
#define TR_LPOS_MAIN
Relative to the main segment, mostly used for racing on the main track.
tPosd relPos
position relative to GC
const char * name
Segment name.
float tdble
Floating point type used in TORCS.
void SimWingConfig(tCar *car, int index)
void SimCarCollideXYScene(tCar *car)
static void SimCarUpdateSpeed(tCar *car)
static void SimCarUpdateForces(tCar *car)
void SimSteerConfig(tCar *car)
void SimAeroConfig(tCar *car)
tTrackSeg * seg
Track segment.
tdble GfParmGetNum(void *handle, const char *path, const char *key, const char *unit, tdble deflt)
Get a numerical parameter from the parameter set handle.
void SimCarUpdate(tCar *car, tSituation *)
void SimAtmosphereConfig(tCar *car)
tdble az
angle along z axis
tdble toStart
Distance to start of segment (or arc if turn)
static void SimCarUpdateCornerPos(tCar *car)
void SimTelemetryOut(tCar *car)
tdble ax
angle along x axis
#define NORM_PI_PI(x)
Angle normalization between -PI and PI.
void SimAxleConfig(tCar *car, int index)