37 #include <tmath/linalg_t.h> 43 #define TRK_SECT_HDR "Header" 45 #define TRK_ATT_WIDTH "width" 46 #define TRK_ATT_SURF "surface" 47 #define TRK_ATT_NAME "name" 48 #define TRK_ATT_VERSION "version" 49 #define TRK_ATT_AUTHOR "author" 50 #define TRK_ATT_DESCR "description" 51 #define TRK_ATT_CAT "category" 53 #define TRK_SECT_GRAPH "Graphic" 55 #define TRK_ATT_3DDESC "3d description" 56 #define TRK_ATT_BKGRND "background image" 57 #define TRK_ATT_BKGRND2 "background image2" 58 #define TRK_ATT_BGTYPE "background type" 59 #define TRK_ATT_BGCLR_R "background color R" 60 #define TRK_ATT_BGCLR_G "background color G" 61 #define TRK_ATT_BGCLR_B "background color B" 62 #define TRK_LST_ENV "Environment Mapping" 63 #define TRK_ATT_ENVNAME "env map image" 64 #define TRK_ATT_SPEC_R "specular color R" 65 #define TRK_ATT_SPEC_G "specular color G" 66 #define TRK_ATT_SPEC_B "specular color B" 67 #define TRK_ATT_AMBIENT_R "ambient color R" 68 #define TRK_ATT_AMBIENT_G "ambient color G" 69 #define TRK_ATT_AMBIENT_B "ambient color B" 70 #define TRK_ATT_DIFFUSE_R "diffuse color R" 71 #define TRK_ATT_DIFFUSE_G "diffuse color G" 72 #define TRK_ATT_DIFFUSE_B "diffuse color B" 73 #define TRK_ATT_SHIN "shininess" 74 #define TRK_ATT_LIPOS_X "light position x" 75 #define TRK_ATT_LIPOS_Y "light position y" 76 #define TRK_ATT_LIPOS_Z "light position z" 77 #define TRK_ATT_FOVFACT "fov factor" 79 #define TRK_SECT_TURNMARKS "Graphic/Turn Marks" 80 #define TRK_ATT_HSPACE "horizontal space" 81 #define TRK_ATT_VSPACE "vertical space" 83 #define TRK_SECT_TERRAIN "Graphic/Terrain Generation" 85 #define TRK_ATT_TSTEP "track step" 86 #define TRK_ATT_BMARGIN "border margin" 87 #define TRK_ATT_BSTEP "border step" 88 #define TRK_ATT_ORIENT "orientation" 89 #define TRK_VAL_CLOCK "clockwise" 90 #define TRK_VAL_CCLOCK "counter-clockwise" 91 #define TRK_ATT_SURFRAND "texture randomness" 92 #define TRK_ATT_RELIEF "relief file" 93 #define TRK_ATT_ELEVATION "elevation map" 94 #define TRK_ATT_ALT_MAX "maximum altitude" 95 #define TRK_ATT_ALT_MIN "minimum altitude" 96 #define TRK_ATT_GRPSZ "group size" 97 #define TRK_ATT_OBJMAP "object map" 98 #define TRK_ATT_COLOR "color" 99 #define TRK_ATT_OBJECT "object" 100 #define TRK_ATT_SEED "random seed" 101 #define TRK_ATT_ORIENTATION_TYPE "orientation type" 102 #define TRK_ATT_ORIENTATION "orientation" 103 #define TRK_ATT_DH "delta height" 104 #define TRK_ATT_DV "delta vert" 105 #define TRK_SECT_OBJMAP "Object Maps" 106 #define TRK_SECT_SURFACES "Surfaces" 107 #define TRK_SECT_OBJECTS "Objects" 109 #define TRK_ATT_FRICTION "friction" 110 #define TRK_ATT_ROLLRES "rolling resistance" 111 #define TRK_ATT_ROUGHT "roughness" 112 #define TRK_ATT_ROUGHTWL "roughness wavelength" 113 #define TRK_ATT_DAMMAGE "dammage" 114 #define TRK_ATT_REBOUND "rebound" 115 #define TRK_ATT_TEXTURE "texture name" 116 #define TRK_ATT_BUMPNAME "bump name" 117 #define TRK_ATT_RACELINENAME "raceline name" 118 #define TRK_ATT_TEXTYPE "texture type" 119 #define TRK_ATT_TEXLINK "texture link with previous" 120 #define TRK_ATT_TEXSIZE "texture size" 121 #define TRK_ATT_BUMPSIZE "bump size" 122 #define TRK_ATT_TEXSTARTBOUNDARY "texture start on boundary" 123 #define TRK_ATT_TEXMIPMAP "texture mipmap" 124 #define TRK_ATT_R1 "color R1" 125 #define TRK_ATT_G1 "color G1" 126 #define TRK_ATT_B1 "color B1" 127 #define TRK_ATT_R2 "color R2" 128 #define TRK_ATT_G2 "color G2" 129 #define TRK_ATT_B2 "color B2" 131 #define TRK_ATT_STEPLEN "steps length" 133 #define TRK_VAL_YES "yes" 134 #define TRK_VAL_NO "no" 136 #define TRK_SECT_MAIN "Main Track" 137 #define TRK_LST_SEGMENTS "Track Segments" 138 #define TRK_ATT_TYPE "type" 139 #define TRK_ATT_RLEXT "raceline ext" 140 #define TRK_ATT_RLINT "raceline int" 141 #define TRK_ATT_RLWIDTHSCALE "raceline widthscale" 143 #define TRK_VAL_STR "str" 144 #define TRK_VAL_LFT "lft" 145 #define TRK_VAL_RGT "rgt" 147 #define TRK_ATT_LG "lg" 148 #define TRK_ATT_RADIUS "radius" 149 #define TRK_ATT_RADIUSEND "end radius" 150 #define TRK_ATT_ARC "arc" 151 #define TRK_ATT_ZS "z start" 152 #define TRK_ATT_ZE "z end" 153 #define TRK_ATT_ZSL "z start left" 154 #define TRK_ATT_ZSR "z start right" 155 #define TRK_ATT_ZEL "z end left" 156 #define TRK_ATT_ZER "z end right" 157 #define TRK_ATT_GRADE "grade" 158 #define TRK_ATT_BKS "banking start" 159 #define TRK_ATT_BKE "banking end" 160 #define TRK_ATT_ID "id" 161 #define TRK_ATT_PROFIL "profil" 162 #define TRK_ATT_PROFSTEPS "profil steps" 163 #define TRK_ATT_PROFSTEPSLEN "profil steps length" 164 #define TRK_ATT_PROFTGTS "profil start tangent" 165 #define TRK_ATT_PROFTGTE "profil end tangent" 166 #define TRK_ATT_PROFTGTSL "profil start tangent left" 167 #define TRK_ATT_PROFTGTEL "profil end tangent left" 168 #define TRK_ATT_PROFTGTSR "profil start tangent right" 169 #define TRK_ATT_PROFTGTER "profil end tangent right" 170 #define TRK_ATT_MARKS "marks" 171 #define TRK_ATT_ENVMAP "env map" 172 #define TRK_ATT_DOVFACTOR "DoV factor" 174 #define TRK_SECT_PITS "Pits" 176 #define TRK_ATT_ENTRY "entry" 177 #define TRK_ATT_EXIT "exit" 178 #define TRK_ATT_START "start" 179 #define TRK_ATT_END "end" 180 #define TRK_ATT_SIDE "side" 181 #define TRK_ATT_LEN "length" 182 #define TRK_ATT_SPD_LIM "speed limit" 184 #define TRK_SECT_LSIDE "Left Side" 185 #define TRK_SECT_RSIDE "Right Side" 186 #define TRK_SECT_LBORDER "Left Border" 187 #define TRK_SECT_RBORDER "Right Border" 188 #define TRK_SECT_LBARRIER "Left Barrier" 189 #define TRK_SECT_RBARRIER "Right Barrier" 191 #define TRK_ATT_SWIDTH "start width" 192 #define TRK_ATT_EWIDTH "end width" 193 #define TRK_ATT_STYLE "style" 194 #define TRK_ATT_HEIGHT "height" 195 #define TRK_ATT_BANKTYPE "banking type" 197 #define TRK_VAL_PLAN "plan" 198 #define TRK_VAL_WALL "wall" 199 #define TRK_VAL_CURB "curb" 200 #define TRK_VAL_FENCE "fence" 203 #define TRK_SECT_CAM "Cameras" 205 #define TRK_ATT_SEGMENT "segment" 206 #define TRK_ATT_TORIGHT "to right" 207 #define TRK_ATT_TOSTART "to start" 208 #define TRK_ATT_HEIGHT "height" 209 #define TRK_ATT_CAM_FOV "fov start" 210 #define TRK_ATT_CAM_FOVE "fov end" 212 #define TRK_VAL_ASPHALT "asphalt" 213 #define TRK_VAL_CONCRETE "concrete" 214 #define TRK_VAL_GRASS "grass" 215 #define TRK_VAL_SAND "sand" 216 #define TRK_VAL_DIRT "dirt" 217 #define TRK_VAL_BARRIER "barrier" 219 #define TRK_VAL_LINEAR "linear" 220 #define TRK_VAL_SPLINE "spline" 222 #define TRK_VAL_TANGENT "tangent" 223 #define TRK_VAL_LEVEL "level" 313 #define TR_PITBUILDING 4 376 #define TR_NORMAL 0x00000000 377 #define TR_LAST 0x00000001 378 #define TR_START 0x00000002 379 #define TR_PITLANE 0x00000004 380 #define TR_SPEEDLIMIT 0x00000008 381 #define TR_PITENTRY 0x00000010 382 #define TR_PITEXIT 0x00000020 383 #define TR_PIT 0x00000040 384 #define TR_PITSTART 0x00000080 385 #define TR_PITEND 0x00000100 403 #define TR_SIDE_LFT 1 404 #define TR_SIDE_RGT 0 414 #define TR_TOMIDDLE 1 427 #define TR_LPOS_MAIN 0 428 #define TR_LPOS_SEGMENT 1 429 #define TR_LPOS_TRACK 2 444 #define TR_PIT_STATE_FREE -1 445 #define TR_PIT_MAXCARPERPIT 4 // maximum cars per pit 459 #define TR_PIT_NONE 0 460 #define TR_PIT_ON_TRACK_SIDE 1 461 #define TR_PIT_ON_SEPARATE_PATH 2 530 typedef tTrack*(*tfTrackBuild)(
char* filename);
618 #define TRK_LST_SURF "List" 619 #define TRK_LST_CAM "list" 620 #define TRK_ATT_PIT_ENTRY "pit entry" 621 #define TRK_ATT_PIT_EXIT "pit exit" 622 #define TRK_ATT_PIT_START "pit start" 623 #define TRK_ATT_PIT_END "pit end" 624 #define TRK_ATT_PIT_TYPE "pit type" 625 #define TRK_ATT_PIT_SIDE "pit side" 626 #define TRK_ATT_PIT_LEN "pit length" 627 #define TRK_ATT_PIT_WIDTH "pit width" 629 #define TRK_LST_SEG "segments" 630 #define TRK_ATT_ENVIND "env map index" 633 #define TRK_ATT_LST "lside type" 634 #define TRK_ATT_LSW "lside width" 635 #define TRK_ATT_LSWS "lside start width" 636 #define TRK_ATT_LSWE "lside end width" 637 #define TRK_ATT_LSSURF "lside surface" 638 #define TRK_ATT_RST "rside type" 639 #define TRK_ATT_RSW "rside width" 640 #define TRK_ATT_RSWS "rside start width" 641 #define TRK_ATT_RSWE "rside end width" 642 #define TRK_ATT_RSSURF "rside surface" 643 #define TRK_ATT_LBS "lborder style" 644 #define TRK_ATT_LBW "lborder width" 645 #define TRK_ATT_LBH "lborder height" 646 #define TRK_ATT_LBSURF "lborder surface" 647 #define TRK_ATT_RBS "rborder style" 648 #define TRK_ATT_RBW "rborder width" 649 #define TRK_ATT_RBH "rborder height" 650 #define TRK_ATT_RBSURF "rborder surface" 652 #define TRK_ATT_BHEIGHT "border height" 654 #define TRK_ATT_LBAS "lbarrier style" 655 #define TRK_ATT_LBAW "lbarrier width" 656 #define TRK_ATT_LBAH "lbarrier height" 657 #define TRK_ATT_LBAFRCT "lbarrier friction" 658 #define TRK_ATT_LBASURF "lbarrier surface" 659 #define TRK_ATT_RBAS "rbarrier style" 660 #define TRK_ATT_RBAW "rbarrier width" 661 #define TRK_ATT_RBAH "rbarrier height" 662 #define TRK_ATT_LBAFRCT "lbarrier friction" 663 #define TRK_ATT_RBASURF "rbarrier surface" 665 #define TRK_VAL_PIT_TYPE_NONE "no pit" 666 #define TRK_VAL_PIT_TYPE_SIDE "track side" 667 #define TRK_VAL_PIT_TYPE_SEP_PATH "seperate path" 669 #define TRK_ATT_FINISH "finish segment" tfTrackBuild trkBuild
build track structure for simu
struct TrackOwnPit tTrackOwnPit
Driver's pit.
int nMaxPits
number max of pits
tdble kRoughness
Roughtness in m of the surface (wave height)
int driversPitsNb
Number of drivers.
void(* tfTrackLocal2Global)(tTrkLocPos *pos, tdble *X, tdble *Y)
Convert a local position (segment, toRight, toStart) into a global one (X, Y)
tTrackSeg * pitEnd
Pit lane segment.
tTrackOwnPit * driversPits
List of pits by driver.
struct trackSeg tTrackSeg
Track segment (tTrackSeg) The segments can be straights (type TR_STR): (the track goes from the right...
int type
Geometrical type:
struct trackSurface * next
Next surface in list.
Location on the track in local coordinates.
tdble lmax
Pitting area length max.
int pitCarIndex
Index of the car in the car array below which occupies the pit.
unsigned int raceInfo
Type of segment regarding the race: Mask value in:
tdble width
main track width
tdble lmin
Pitting area length min.
Interface Structure for Track Loader.
struct RoadCam tRoadCam
road camera
int nPitSeg
actual number of pits
tdble kRebound
Coefficient of energy restitution.
tTrackSeg * pitEntry
Pit lane segment.
tdble length
main track length
tdble speedLimit
Speed limit between pitStart and pitEnd.
int type
Type of description:
char * internalname
Internal name of the track.
tTrkLocPos pos
Center of the pit position.
tTrackGraphicInfo graphic
const char * material
Type of material used.
struct CarElt * car[TR_PIT_MAXCARPERPIT]
Car links for pit.
tTurnMarksInfo turnMarksInfo
tTrackBarrier * barrier[2]
Segment barriers.
tTrackSurface * surface
Barrier surface.
const char * name
Segment name.
struct SegExt tSegExt
Extended track segment.
tdble(* tfTrackHeightL)(tTrkLocPos *pos)
Returns the absolute height in meters of the road at the local position.
#define TR_PIT_MAXCARPERPIT
float tdble
Floating point type used in TORCS.
tfTrackGlobal2Local trkGlobal2Local
tfTrackHeightL trkHeightL
int nseg
Number of segments.
tTrack *(* tfTrackBuild)(char *filename)
Read given track from filename into tTrack struct.
struct trackSeg * side[2]
const char * name
Name of the track.
The Gaming Framework API.
tfTrackHeightG trkHeightG
void * params
Parameters handle.
tTrackSeg * pitExit
Pit lane segment.
tdble height
Barrier height.
void(* tfTrackGlobal2Local)(tTrackSeg *seg, tdble X, tdble Y, tTrkLocPos *pos, int type)
Convert a global position (segment, X, Y) into a local position (segment, toRight, toStart)
struct trackSurface tTrackSurface
Surface.
void(* tfTrackSideNormal)(tTrackSeg *seg, tdble X, tdble Y, int side, t3Dd *norm)
Get the normal vector (in global coordinate system) of the border of the track including the sides...
tdble kRollRes
Rolling resistance.
tdble height
Max height for curbs.
tTrackSeg * seg
Track segment.
tdble width
Width of each pit stop.
int version
Version of the track type.
Track segment (tTrackSeg) The segments can be straights (type TR_STR): (the track goes from the right...
const char * author
Author's name.
void(* tfTrackShutdown)(void)
Release current track and all its resources.
tdble len
Lenght of each pit stop.
tfTrackLocal2Global trkLocal2Global
struct trackBarrier tTrackBarrier
Barrier.
struct trackSeg * prev
Previous segment.
tTrackSurface * surface
Segment surface.
tdble kDammage
Dammages in case of collision.
tTrackSeg * pitStart
Pit lane segment.
struct trackSeg * next
Next segment.
void(* tfTrackSurfaceNormal)(tTrkLocPos *pos, t3Dd *norm)
Get the normal vector of the road (pointing upward).
tTrackSurface * surfaces
Segment surface list.
tfTrackShutdown trkShutdown
const char * category
Category of the track.
tTrackSeg * seg
Main track.
tTrackPitInfo pits
Pits information.
tdble kFriction
Coefficient of friction.
tfTrackSideNormal trkSideNormal
tdble kRoughWaveLen
Wave length in m of the surface.
char * filename
Filename of the track description.
tdble(* tfTrackHeightG)(tTrackSeg *seg, tdble X, tdble Y)
Returns the absolute height in meters of the road at the given global position.
tfTrackBuild trkBuildEx
build with graphic extensions (used by trackgen tool)
tfTrackSurfaceNormal trkSurfaceNormal
tdble width
Barrier width.