;
; Default car settings - fills in missing data from another cars' car.ini
; 04-08-00: Created!
; 10-03-01: Some Pacejka taken from Genta's book,
; 'Motor Vehicle Dynamics, Modeling and Simulation', appendix 1.2, example 3.
; NOTES:
; - Uses metrics (SI) everywhere. No American units (inches/pounds) are used in Racer.
; - For a full reference, see http://www.racer.nl/reference/carphys.htm
; (c) 2000-2013 Cruden B.V./Ruud van Gaal
;
car
{
  ; Car information
  name=MyCar
  year=19xx
  credits=Created by me
  comments=Some comments
  ; Give every car a unique ID
  id=unique_id
  ; Minimal version of Racer for which this can is known to work
  ; (i.e. '050b6'=v0.5.0 beta 6, '049f'=v0.4.9 final
  ;version=050b6
  ; External physics type (MatLab DLL=ephyse_dll/MatLab Simulink live=ephyse_net)
  ; Default is ephyse_dll (used onyl if 'physics' is not empty)
  ;physics_type=
  ; External physics name (interpreted as model or dll; don't add the extension)
  physics=
  ; Physics model directory; use if the model is in a subdirectory of <cardir>/ephyse_net
  physics_dir=
  ; Speed class; 0=slow, 1=medium, 2=fast; used in AI line-adjustment (default=1)
  speed_class=1
  ; Number of wheels
  wheels=4
  ; Number of plates under the car
  plates=0
  ; Skidding
  skid
  {
    ; Skid sound (obsolete method, use audio.skid.* instead)
    ;sample=skid.wav
  }
  shadow
  {
    ; Shadow texture and size
    ;texture=shadow.tga
    ;width=2.2
    ;length=4.5
    ; Z offset to align shadow with car
    ;offset_z=0.3
    ; Shadow intensity - when in the dark (inside the projected shadow)
    intensity_dark=0.7
    ; Shadow intensity when in a light area (outside the projected shadow)
    intensity_light=0.3
  }
  ; Center of gravity of car sprung mass
  ; Relative to the nullpoint
  cg
  {
    x=0
    y=0
    z=0
  }
  ; Force feedback factor to modify aligning moment effects
  ff_factor=1.0
  ; Factors influencing the controller setup screen's settings for steering wheel characteristics
  ff_friction=1.0
  ff_stickfriction=1.0
  ff_damping=1.0
  ff_inertia=1.0
  ; Overall gain on all above ff_* factors
  ff_gain=1.0
  ; Acceleration factor for controllers
  acc_factor=1.0
}
graphics
{
  ; Car models used
  shadow
  {
    model
    {
      ; Projected shadow model
      ;file=myshadow.dof
      ; Use the shaders from the model?
      use_shaders=0
    }
    intensity=0.3
  }
}
ai
{
  ; Magic under/oversteer correction
  understeer_correct=9999
  oversteer_correct=9999
  ; Grip factor for the car (don't go too far; 1.2 is max probably before cars start tipping over)
  grip_factor=1.0
  ; CG factor; artifically lowers the effective CG for lateral tire forces,
  ; enabling faster cornerning and still not flipping the car. 0=no effect, upto 1.0=full
  cg_factor=0
  ; RC factor; normally 0, but towards 1 it pulls the roll centers towards the CG
  rc_factor=0
  ; Magic spring helping the car; alpha functionality
  spring_lat_factor=0
  ; Directional spring
  spring_dir_factor=0
  ; Max velocity for this car (m/s), in case no explicit AI file is defined (data/tracks/<trackname>/ai/<carname>.ini)
  ; this value then gives an approximate top speed. The AI velocities will be scaled so the max velocity
  ; in the AI file will match this top speed. Other velocities are scaled linearly based on that.
  max_velocity=50.0
  ; Factor which is applied when reducing desired velocity when stability goes down (understeer/oversteer)
  ; The default of 1.0 will reduce desired speed quite a bit; you may use a value closer towards zero
  ; to reduce the slowdown (for cars that have a high negative engine torque for example)
  stability_reduces_velocity=1.0
  ; Factor applied to steer inputs. Reduce from 1 towards 0 to decrease steering wheel output.
  ; Useful when the AI driver gives too much steer input, thereby rocking the car from left
  ; to right and back again too harshly.
  steering_factor=1.0
  ; Factor with which the ai performance is reduced when it is snowing (linear with snow ratio)
  snow_performance_ratio=1.0
  ; Factor with which the ai performance is reduced when it is raining (linear with rain ratio)
  ; When it's raining, the cars will drive slower. The grip is unchanged for AI cars, to keep
  ; them on the road (Racer v7.0).
  rain_performance_ratio=1.0
  ; Factor applied when driving under a yellow flag
  yellow_performance_ratio=0.9
  ; Factor applied when driving under a safetycar flag
  safetycar_performance_ratio=0.7
}
animation
{
  ; Flash all lights? (ms for on period, off-period is the same, so total time is twice this value)
  flash_lights=0
}
damage
{  
  chassis
  {
    ; Initial damage of chassis (0.0-1.0); normally 0
    damage=0.0
    ; Fade out damage (slowly creep back to zero if undamaged); 0 if damage 'sticks' the entire race
    fade=0.0000
    ; Speed dependence to determine damage severity
    speed_factor=0.00005
    ; Force dependence to determine damage severity
    force_factor=0.0000002
    ; factor over severity for setting damage; make this non-zero to activate damage
    damage_factor=0.0
    ;
    ; Chassis damage can affect engine performance, the following parameters are used to control this engine damage
    ; When engine damage is active, this performance factor will be applied to the engine
    ; 1.0 is off ... since 1.0 means no change
    damage_engine_factor=0.5
    ;  if chassis damage is equal or bigger than this, engine damage will be activated
    damage_engine_from=0.99
    ; Lower damage to this value when engine damage is activated
    damage_engine_to=0.0
    ; how long to apply engine damage  (ms)
    damage_engine_time=5000

    texture_damage
    {
      ; enable texture damage ?
      enable=0
      ; lod model to use to shoot rays at
      ray_lod=0
      ; factor to determine dent severity
      dent_factor=1.0
      ; dent linearity (0-2)
      dent_linearity=1.8
      ; factor to apply to severity to determine damage radius on control texture
      radius_factor=15.0
      ; radius min
      radius_min=1
      ; random around uv coords (from -x to x)
      uv_randomness=0.2f;
    }
  }    
}
lights
{
  ; Projected lights
  light0
  {
    ; Field of view (vertical)
    fov=20.0
    ; Aspect (horizontal)
    aspect=5.0
    ; Distance to car
    z=2.0
    ; Pitching with respect to car (in degrees)
    pitch=7
    ; Far plane (if not specified, uses entire visibility
    ;far=200
    ; Image to project
    ;texture=default_light.tga
    ; Color (multiplied with texture)
    color=4 4 4
  }
}
flares
{
  ; Flares to enhance lights
  ;flare0
  ;{
  ;  pos=-0.64 0.15 2.2
  ;  color=40 40 40
  ;  normal=-0.05 -0.1 0.6
  ;  z_offset=-3000
  ;  size_factor=2
  ;  ; Billboard type: 0=screen aligned, 1=flare normal aligned
  ;  billboard=0
  ;}
}
audio
{
  skid
  {
    sample=
  }
  horn
  {
    sample=
    ;horn.wav
  }
  shiftin
  {
    ;sample=shift_in.wav
  }
  shiftout
  {
    ;sample=shift_out.wav
  }
  warn_rpm
  {
    ;sample=warn_rpm.wav
  }
  understeer_oversteer
  {
    ; See http://www.racer.nl/tutorial/car_sounds.htm#understeeroversteer
  }
  damper
  {
    ; See http://www.racer.nl/tutorial/car_sounds.htm#damper
  }
}
body
{
  ; Weight of the car's body (kg)
  ; This excludes wheels, driver and fuel
  mass=1450
  ; Inertia values; X/Y/Z=pitch, yaw (heading), roll
  inertia
  {
    x=1730
    y=1950
    z=590
  }
  ; Collision box
  width=2.03
  height=.8
  length=4.46
  ; Define bounding box manually?
  manual_box=0
  ; Moving bounding box around
  box_offset=0 0 0
  model
  {
    file=body.dof
    offset
    {
      x=0
      y=0
      z=0
    }
  }
  ; Magic damper to keep spinning in control
  yaw_damper
  {
    ; Damper amount; yawTorque=k*yawAngularVelocity (try k=5000 for example)
    k=0
    ; Maximum torque allowed
    max_torque=10000
    ; Threshold for yawAngularVelocity to start giving torque - above this angular velocity, the spring will act
    threshold=0.5
  }
}
steer
{
  ; Position
  x=0
  y=.7
  z=.2
  ; Rotation towards the driver
  xa=15
  ; Max angle of rotation (angle = -lock/2..lock/2)
  lock=900
  ; Steering linearity (added on top of controller linearity!)
  ; Values <0 mean exaggerate (-1=full linear again)
  linearity=1.0
  model
  {
    ; 3D model
  }
  ; Non-linear curves (active steering systems)
  power_steering
  {
    ; Curves are multiplied (total=curve_vel*curve_steer)
    ;assist_curve_vel=assist_vs_vel.crv
    ;assist_curve_steer=assist_vs_steer.crv
    ;friction_curve_vel=friction_vs_vel.crv
    ;friction_curve_steer=friction_vs_steer.crv
    ;damping_curve_vel=damping_vs_vel.crv
    ;damping_curve_steer=damping_vs_steer.crv
    ;spring_curve_vel=spring_vs_vel.crv
    ;spring_curve_steer=spring_vs_steer.crv
  }
}
engine
{
  ; Position (used for rumble!)
  x=0
  y=.2
  z=-1.0
  size=.25
  ; Weight of engine
  mass=10
  ; Maximum rpm (mostly lower than this default); above this the revlimiter kicks in
  max_rpm=30000
  ; Rev limiter (above max_rpm) time to cut throttle (ms)
  rev_limiter_time=50
  ; Idle rpm
  idle_rpm=1000
  ; Idle method; 0=old method (<v0.8.1) which keeps throttle always open
  ; 1=new method, where throttle is applied ONLY when engine RPM drops below idle_rpm
  ; Throttle is then progressively applied upto stall_rpm
  ; Default is the old method (0) for compatibility, but method 1 is far more realistic.
  idle_method=0
  ; For idle_method=1, you can still supply an amount of throttle that is applied
  ; even when letting go of the pedal. Some fuel is then still applied while coasting
  ; full with a fully depressed pedal.
  ; Non-zero for carburator engines, 0 for diesels
  idle_throttle=0
  ; RPM at which to start disengaging the clutch (when autoclutch is active; see racer.ini).
  ; Automatically press clutch when below autoclutch_rpm?
  autoclutch=1
  ; The (auto)clutch will be fully disengaged when the rpm hits idle_rpm, and starts being pressed at autoclutch_rpm.
  ; Not required anymore since v0.8.9 (0 means dynamic autoclutch rpm depending on throttle position.
  autoclutch_rpm=0
  ; Go for high-torque rpm in 1st gear? (autoclutch_rpm must be 0)
  launch_control=0
  ; Engine RPM -> maximum torque curve (normalized 0..1 curve)
  curve_torque=torque.crv
  ; Maximum torque (multiplier for the torque curve)
  max_torque=324
  ; Reaction of engine torque through body roll (0..1)
  torque_reaction=0.0
  ; Engine rumble - amplitude (try 5000 in your own car.ini)
  rumble_amplitude=0
  ; RPM at which rumble calculation are skipped (too faint to notice)
  rumble_maxrpm=4000
  ; Number of cylinders
  cylinders=4
  ; For V shaped engines, enter the angle (in degrees!) between the rows of cylinders
  cylinder_angle=60
  ; Starter engine; present?
  starter=1
  ; Torque generated by starter engine (Nm) to get engine running
  starter_torque=25
  ; When starting the game, is the engine pre-started?
  start_stalled=0
  ; RPM at which to stall the engine
  stall_rpm=600
  ; Enable stalling at all?
  enable_stall=1
  ; Make sure start_rpm is larger than stall_rpm
  start_rpm=900
  ; Dash indications - gives a range for shifting warnings
  ; Only used with exotic proprietary controllers
  ; Not specified here, in which case defaults are used,
  ; based on max_rpm
  min_warn_rpm=0
  max_warn_rpm=0
  shifting
  {
    ; Automatic gearbox? May in the future be overruled by the user.
    automatic=0	
    ; Fast shifting? If 0, gearbox stays in neutral while ShiftUp is pressed.
    ; If 1, the entire shift process will proceed without waiting for ShiftUp release
    fast=0
    ; RPMs at which to shift; make sure shift_down_rpm>shift_up_rpm
    shift_up_rpm=3000
    shift_down_rpm=2000
    ; Automatic shifting duration
    time_to_declutch=200
    time_to_clutch=200
    ; Time spent in neutral halfway shift
    time_in_neutral=0
    ; Shifting down separate times
    time_to_declutch_down=200
    time_in_neutral_down=0
    time_to_clutch_down=200
    ; Blip throttle when shifting down? 0=no (uses actual throttle), >0=throttle amount during downshift
    blip_throttle=0
    ; Cut throttle when up/down-shifting? (throttle is held at 0)
    cut_throttle=1
    ; Cut ignition when upshifting? (0..1; 0=full cut, 1=no cut)
    cut_ignition=1
    ;shift_curves
    ;{
    ;  ; Gear shifting curves - maps throttle to speed; if above that speed & throttle combination, the gearbox will shift (up/down)
    ;  gear1_2=automatic_gear1_2.crv
    ;  gear2_1=automatic_gear2_1.crv
    ;  gear2_3=automatic_gear2_3.crv
    ;  gear3_2=automatic_gear3_2.crv
    ;}
  }
  ; Inertia of engine parts
  inertia
  {
    ; Rotational inertia of engine parts (kg*m^2)
    engine=0.09
  }
  ; Internal engine braking coefficient (0=low, >0=friction)
  ; The braking coefficient is linked to the rpm of the motor (linearly)
  ; in the following way:
  ; min_torque=-braking_coeff*rps    (rps = rpm/60)
  ; max_torque=torque
  ; Throttle (0..1) moves the torque from min_torque..max_torque
  ; Example: An F1 car @14.500 rpm => braking_coeff=0.74
  ; Then   : rps=14500/60 = 241, negative torque = -0.74*241 = -180 Nm
  braking_coeff=0.34
  ; Engine friction (NYI)
  friction=0
  ; Audio - obsolete for Racer v0.5.1+ (see 'audio' tree)
  sample=engine.wav
  sample_rpm=5200
  ; RPM jitter effect when shifting
  jitter
  {
    ; RPM variance is dependent on rpm and amplitude below
    amplitude=0
    ; Time to last (ms); randomly selected so totalTime=time_min+rand(time_var)
    time_min=100
    time_var=500
    ; Frequency; randomly selected so freq=frequency_min+rand(frequency_var)
    frequency_min=4
    frequency_var=9
  }
  ; Speed limiter - velocity at which limiter kicks in (m/s)
  speedlimiter
  {
    ; 80 km/h
    velocity=22.22
    ; Time (ms) to keep throttle cut when going above the limiter velocity
    time=10
  }
}
fuel
{
  ; Fuel type: 0=gasoline, 1=diesel. Determines efficiencies
  type=0
  ; Max storage in liters
  max=50.0
  ; Brake specific fuel consumption (gram/Joule); an idea of the efficiency of the engine
  bsfc=2.0e-5
  ;bsfc=6.944e-5
}
traction_control
{
  enable=0
  ; Allowed front/rear wheel speed ratio (1.1=10% difference allowed)
  max_velocity_ratio=1.1
  ; When to turn TC off
  min_velocity_ratio=1.01
  ; Minimum velocity for TC to work
  min_velocity=0
}
abs
{
  ; Anti-lock braking system
  enable=0
  ; Allowed front/rear wheel speed ratio
  max_velocity_ratio=1.1
  ; When to turn TC off
  min_velocity_ratio=1.01
  min_velocity=0.1
  ; Braking factor when ABS is applied
  braking_factor=1.0
}
gearbox
{
  ; Number of gears
  gears=6
  ; Initial gear - only used when auto clutch is on (0=neutral, 1=1st, 2=2nd...). Default is 1
  init_gear=1
  ; Gear ratios; note that negative ratios mean reverse gears
  ; You may have only 1 reverse gear
  gear0
  {
    ratio=-2.00
    inertia=0.9
    ; Linearity of throttle for this gear (useful for high-power cars to regulate
    ; throttle at low gears). Can be set per gear.
    engine_map=1.0
  }
  gear1
  {
    ratio=3.214
    inertia=0.13
    ; Linearity of throttle for this gear (useful for high-power cars to regulate
    ; throttle at low gears). Can be set per gear.
    engine_map=1.0
    warning_sound
    {
      ; Optional warning sound as rpm gets high
      rpm=5000
      ; Use a non-zero duration to activate
      duration=0
      freq=1
    }
  }
  gear2
  {
    ratio=2.105
    inertia=0.09
    engine_map=1.0
    warning_sound
    {
      ; Optional warning sound as rpm gets high
      rpm=5000
      ; Use a non-zero duration to activate
      duration=0
      freq=1
    }
  }
  gear3
  {
    ratio=1.458
    inertia=0.07
    engine_map=1.0
    warning_sound
    {
      ; Optional warning sound as rpm gets high
      rpm=5000
      ; Use a non-zero duration to activate
      duration=0
      freq=1
    }
  }
  gear4
  {
    ratio=1.094
    inertia=0.05
    engine_map=1.0
    warning_sound
    {
      ; Optional warning sound as rpm gets high
      rpm=5000
      ; Use a non-zero duration to activate
      duration=0
      freq=1
    }
  }
  gear5
  {
    ratio=0.861
    inertia=0.03
    engine_map=1.0
  }
  ; Final (differential) ratio, multiplies all gear ratios
  ; Use differential.diff<x>.ratio instead, this value is obsolete.
  end_ratio=4.051
}
clutch
{
  ; Maximum friction the clutch can generate (Nm)
  max_torque=500
}
handbrakes
{
  ; Apply to which wheels? (give indices starting at 0; mostly 23, the rears)
  wheels=23
}
differential
{
  ;
  ; Global differential parameters; is now obsolete (use differentials.*), but still
  ; loaded in case no diffs are defined (count=0)
  ;
  ; Diff type; 0=free, 1=viscous, 2=Salisbury (really an LSD), 3=LSD, 4=Locked, 5=Active
  type=1
  ; Ratio of input vs. output (default=1)
  ;ratio=4.051
  ; Inertia of ring gear
  inertia=0.05
  ; Viscous rpm difference coefficient
  locking_coeff=100
  ; Which wheels? Mostly wheels 2 & 3 are placed at the rear.
  output0=2
  output1=3
}
differentials
{
  ; Number of diffs (0=use global differential for backward compatibility)
  count=0
  diff0
  {
    ; Diff type; 0=free, 1=viscous, 2=salisbury, 3=lsd, 4=locked
    type=1
    ; Ratio of input vs. output
    ; This overrides gearbox.end_ratio if defined, to be more flexible
    ; in building drivelines with multiple differentials. gearbox.end_ratio
    ; is obsolete but still supported for backward compatibility.
    ;ratio=4.051
    ; Inertia of ring gear
    inertia=0.05
    ; LSD diff: preload torque (the defaults will give an open differential!)
    preload=0
    ; LSD diff: power-on coefficient
    power_ratio=2.5
    ; LSD diff; power-off coefficient. For a 1-way LSD, coast_coeff=0, for a 2-way LSD
    ; coast_coeff=1 and for a 1.5 way coast_coeff is somewhere inbetween 0 and 1
    coast_ratio=2.5
    ; Viscous diff: rpm difference coefficient
    locking_coeff=100
    ; Which wheels? Mostly wheels 2 & 3 are placed at the rear.
    output0=2
    output1=3
    ; Friction (Nm)
    friction=0
  }
}
aero
{
  draft
  {
    ; Drafting/slipstreaming - scaling in meters of the area behind the car, based on velocity
    ; Use gfx.show_aero=1 in racer.ini to visualize the draft areas
    scale_lat_rear=0.4
    scale_lon_rear=1
    ; Air bubble in front
    scale_lat_front=0.08
    scale_lon_front=0.2
  }
  body
  {
    ; Application center relative to the CG
    center=0 -0.1 0
    ; Longitudinal drag coefficient (Cx, X-axis is SAE's car longitudinal)
    cx=0.335
    ; Frontal area in m^2
    area=1.824
  }
  wings=1
  wing0
  {
    name=Front wing
    span=1.2
    cord=0.2
    coeff_drag=0.2
    coeff_down=0.3
    center=0 0.2 2.1
    ; Angle in degrees
    angle=10
    ; Angle offset; a zero degree wing still gives downforce often
    angle_offset=0
  }
}
antirollbar
{
  count=0
  ; The anti-roll bars add forces to the suspension as follows:
  ; diff=compression_left-compression_right
  ; force=diff*k
  ; So it's linearly related to the difference in suspension compression
  arb0
  {
    susp_left=0
    susp_right=1
    k=100
  }
}
; Suspension defaults
susp_default
{
  ; Relative location (to body)
  ;x=.7
  y=0.4
  z=1.3
  ; Size of spring (in meters) when in rest (used as size of suspension actually)
  ; In most cars, 'restlen' will actually be larger than 'maxlen'; this is called
  ; precompressing the spring. This example is kept for compatibility's sake,
  ; but in your car you'd preferably use a value so that restlen>maxlen.
  restlen=0.5
  minlen=0.3
  maxlen=0.7
  ; Warp length - suspension length when car is put onto the track. To calculate a nice
  ; value, set it to 0, put the car on a flat piece of track, check the suspension
  ; lengths with Ctrl-8 and put those numbers in 'warplen' for the front/rear suspension.
  ; 0 is the default, which attempts to calculate a reasonable number (average of min/maxlen).
  warplen=0
  ;warplen=-1
  ; Bumpstops (length of 0.01-0.02 is normal; default is no bumpstops) - in meters
  bumpstop_len=0
  ; Bumpstop maximum rate (N/m at full compression)
  bumpstop_k=100000
  ; Bumpstop damping (N/m/s, for k=100000 a value of perhaps 10000 is a nice start)
  bumpstop_damping=0
  ; Reboundstop to keep wheel from going through maxlen when jumping for example (default is a no-length reboundstop,
  ; although it extends below maxlen, so it really extends indefinitely; this is an option in the Racer
  ; source code really, whether to forcefully clamp the suspension between minlen and maxlen, or let it run free;
  ; preferably the clamp is on to avoid huge forces when the car falls down from a height for example)
  reboundstop_len=0.01
  ; Reboundstop maximum rate (N/m at full compression)
  reboundstop_k=170000
  ; Reboundstop damping (N/m/s, for k=100000 a value of perhaps 10000 is a nice start)
  reboundstop_damping=0
  ; Spring coefficient (N/m); determines force when spring is pulled/pushed
  k=17400
  ; Damper bump function; 0=linear, 1=exp, 2=digressive, 3=sqrt
  bump_function=0
  ; Damper bump rate (F_damp=bump_rate*bump_function(wheelVerticalVelocitY))
  bump_rate=2600
  ; Damper max value (only used if bump_function=digressive)
  bump_max=3000
  ; Rebound rate (N/m/s)
  rebound_rate=2850
  ; Gfx (nyi)
  model
  {
    file=
  }
  ; Geometrical effects
  ; Bump steer; toe change in radians per meter of suspension deflection
  toe_change_per_m=0
  ; Camber change in radians per meter deflection
  camber_change_per_m=0
  ; Camber change ratio; degrees of camber / degrees of wheel rotation
  camber_change_steering=0
  ; Mechanical trail; adds to force feedback directly when steering and driving.
  caster_offset=0
  ; NYI
  caster_angle=0
  kingpin_offset=0
  kingpin_angle=0
  ; Suspension height change per radian of steering (pushing the wheel up effect when steering)
  susp_y_change_per_rad=0.0
}
; Suspension front defaults (where different from susp_default)
susp_front~susp_default
{
  z=1.3
  ; Roll center (lateral forces are applied here; relative to suspension)
  roll_center
  {
    x=0
    y=0
    z=0
  }
}
susp_rear~susp_default
{
  z=-1.3
  k=19600
  bump_rate=3100
  rebound_rate=3350
  ; Roll center (lateral forces are applied here; relative to suspension)
  roll_center
  {
    x=0
    y=0
    z=0
  }
}
susp0~susp_front
{
  x=0.7
}
susp1~susp_front
{
  x=-.7
}
susp2~susp_rear
{
  x=.7
}
susp3~susp_rear
{
  x=-.7
}
;
; Wheels/tires
;
tire_model
{
  ; SAE 950311 low-speed tire implementation
  ; Relaxation length laterally (in m)
  relaxation_length_lat=0.91
  ; Relaxation length longitudinally (in m)
  relaxation_length_long=.091
  ; Damping lat/long threshold speed (in m/s, same for longitudinal and lateral)
  damping_speed=0.15
  ; Strength of damping; too little and the car keeps vibrating (low freq.) - unused
  ; Used again since 28-11-2012 (v0.9.0RC6/v5.4.3); critical damping coefficient so 0..1
  damping_coefficient_lat=0.7
  damping_coefficient_long=0.7
}
pacejka_default
{
  ; Pacejka constants for all tires
  ; Use per-wheel though!
  ; Lateral force
  a0=1.799
  a1=0
  a2=1688
  a3=4140
  a4=6.026
  a5=0
  a6=-0.3589
  a7=1
  a8=0
  a9=-0.006111
  a10=-0.03224
  a111=0
  a112=0
  a12=0
  a13=0
  ; Longitudinal force
  b0=1.65
  b1=0
  b2=1688
  b3=0
  b4=229
  b5=0
  b6=0
  b7=0
  b8=-10
  b9=0
  b10=0
  ; Aligning moment
  c0=2.068
  c1=-6.49
  c2=-21.85
  c3=0.416
  c4=-21.31
  c5=0.02942
  c6=0
  c7=-1.197
  c8=5.228
  c9=-14.84
  c10=0
  c11=0
  c12=-0.003736
  c13=0.03891
  c14=0
  c15=0
  c16=0.639
  c17=1.693
  ; Optimal values (used in Gregor Veble's slip combination method, friction_circle_method #3)
  optimal_slipratio=0.2
  ; Optimal slip angle in radians (=degrees/52.29578)
  optimal_slipangle=0.139626
  ; Combined slip limiter; if not defined, uses the value from racer.ini (dbg_car.max_slip_len). Probably around values 1.5-9.0.
  ;max_slip_len=6.0
  ; Limiters on inputs (slipangle/slipratio/camber/load) - they are wide open here but
  ; most tire files (.tir for example) come with quite strict limits!
  ; Slip angle range in radians
  slipangle_min=-99
  slipangle_max=99
  ; Slip ratio is non-dimensional (-1..2 or higher)
  slipratio_min=-99
  slipratio_max=99
  ; Camber limiter in radians
  camber_min=-99
  camber_max=99
  ; Load limiter in Newton; note that Fz is load
  fz_min=0
  fz_max=1e6
  ; Tuning of combined slip for method #7 (similarity) - influence of slip ratio on Fy
  lyka=1.0
  ; Influence of slip angle on Fx
  lxal=1.0
}
wheel_common
{
  ; Position of contact patch center wrt suspension
  x=0
  y=0
  z=0
  ; Mass in kilograms; add car body
  mass=20
  ; Rotational inertia (along spin axis)
  inertia=2.3
  radius=.34
  width=.3
  ; Contact patch size (for multisampling the surface)
  contact_patch_width=0.2
  contact_patch_length=0.2
  ; Tire damping (N/m/s), damping tire_rate, start with 0.01*tire_rate as a nice value (~1400?). Real life uses
  ; around 500 at speed, more around 2500 when standing still.
  tire_damping=500
  ; Tire damping at low speed - default is the same value as tire_damping (so commented out here to avoid overruling that)
  ;tire_damping_lowspeed=500
  ; Tire damping low speed threshold (rad/s) - below this, the tire_damping_lowspeed starts to kick in (linearly)
  tire_damping_threshold=5
  ; Load filtering to simulate the rubber catching shocks (see http://www.racer.nl/reference/wheels.htm) - 0=no filtering
  ; OBSOLETE since 12-12-2012
  load_filter_frequency=0
  ; Noise filtering - simulates rubber softening noise (see http://www.racer.nl/reference/wheels.htm)
  ; OBSOLETE since 12-12-2012; noise is now a track property, not a car property
  ;noise_filter_frequency=0
  ; Noise filtering damping - keep above 0.7 for stability, below 1.0 to avoid being too soft
  ;noise_filter_damping=0.9
  ; Surface height filtering (default 0 for no filtering) - try 50 as a start (=50Hz).
  ; For Racer v0.9.0RC6+, this is a 2nd order filter, based on a Simulink model.
  ; Very useful to smooth out Lidar data.
  surface_height_filter_frequency=0
  ; Surface height filtering damping - keep above 0.7 for stability, below 1.0 to avoid being too soft
  ; OBSOLETE (fixed damping of (3.0*PI*freq)^2 )
  ;surface_height_filter_damping=0.9
  ; Fz filtering with 1st order filter; use frequency=0 to disable
  ; This filtered Fz is fed to the Pacejka model, therefore smoothing out tire output force response.
  ; Acceptable start frequency to begin tuning: fz_filter_frequency=100
  fz_filter_frequency=0
  ;fz_filter_damping=0.7
  ; Fz filtering for the D component of Pacejka. D indicates the peak force, and spikes on Fz
  ; will directly give spikes on Fy. This gives a separate filter on the 'D' (peak) compared
  ; to fz_filter_frequency above, which filters Fz for B*C.
  ; This filter is first order.
  fz2_filter_frequency=30
  ; Fy filtering with 1st order filter - this is filtering the output of the Pacejka tire forces.
  ; This will give a bit of phase lag; acceptable value for example around 50 (10-100 seems acceptable).
  fy_filter_frequency=0
  ; Fx filtering with 1st order filter - this is filtering the output of the Pacejka tire forces.
  ; This will give a bit of phase lag; acceptable value for example around 50 (10-100 seems acceptable).
  fx_filter_frequency=0
  ; Camber in degrees; negative is lean inward (to the car)
  camber=0
  ; Brakes
  inboard_brakes=0
  ; Ackerman factor (default=1); exaggerates steering in one direction
  ackerman=1
  ; Reverse steering (toe remains unchanged, ackerman is reversed as well)
  reverse_steering=0
  ; Brakedisc temperature
  brake_heating=0.0003
  brake_dissipation=0.0005
  brake_max_temp=1000
  ; Tire model(s)
  tire_model~tire_model
  {
  }
  noronha
  {
    ; Noronha SAE 980243 spring tire model for low speed (where Pacejka becomes unstable)
    ; Set enable to 1 in your car.ini to enable this model at low speed
    enable=0
    ; Longitudinal spring stiffness (N/m) - often around 3 times the lateral spring stiffness
    kt=300000
    ; Lateral spring stiffness (N/m)
    ks=100000
    ; Relaxation coefficients; calculated as coeff=wheelRadius/relaxationLength
    ;relaxation_t=0
    ;relaxation_s=0
  }
  ; Combined slip method. The default is -1, which means it uses the global value, defined in racer.ini under dbg_car.friction_circle_method.
  ; For possible values, see racer.ini's comments next to that setting.
  friction_circle_method=-1
  ; Slide force factor; this will reduce the sliding forces. Only works for friction_circle_method=11 (brush_model_2013). Defaults to 1; valid range around 0.5-1.0.
  ; Values above 1.0 do give more stability when the car breaks out though, for more forgiving behavior.
  ; See also http://www.racer.nl/tutorial/combined_slip.htm#method11
  slide_force_scale=1.0
}
wheel0~wheel_common
{
  ; Rotates when steering?
  steering=1
  ; Max wheel rotation (90 means from 45 degrees left to 45 degrees right)
  lock=40
  ; Toe in degrees
  toe=0
  ; Rolling resistance
  rolling_coeff=0.015
  ; Braking capability in Nm (torque)
  max_braking=4000
  ; Brake factor (determines brake balance)
  braking_factor=.68
  ; Hand braking capability in Nm (torque)
  max_handbrake_torque=400
  ; Vertical tire spring rate (when the wheel is loaded, it acts as a spring)
  ; In N/m (! not N/cm)
  tire_rate=140000
  model
  {
    ; Use a 3D model instead of stub graphics
    file=tire_lf.dof
  }
  pacejka~pacejka_default
  {
  }
}
wheel1~wheel_common
{
  ; Rotates when steering?
  steering=1
  ; Max wheel rotation
  lock=40
  ; Toe in degrees
  toe=0
  ; Rolling resistance
  rolling_coeff=0.015
  ; Tire spring rate
  tire_rate=140000
  ; Braking capability in Nm (torque)
  max_braking=4000
  ; Brake factor (determines brake balance)
  braking_factor=.68
  ; Hand braking capability in Nm (torque)
  max_handbrake_torque=400
  model
  {
    file=tire_rf.dof
  }
  pacejka~pacejka_default
}
wheel2~wheel_common
{
  steering=0
  ; Toe in degrees
  toe=0
  ; Rolling resistance
  rolling_coeff=0.015
  ; Tire spring rate
  tire_rate=140000
  ; Braking capability in Nm (torque)
  max_braking=4000
  ; Brake factor (determines brake balance)
  braking_factor=.32
  ; Hand braking capability in Nm (torque)
  max_handbrake_torque=400
  model
  {
    ; Use a 3D model instead of stub graphics
    file=tire_lr.dof
  }
  pacejka~pacejka_default
}
wheel3~wheel_common
{
  steering=0
  ; Toe in degrees
  toe=0
  ; Rolling resistance
  rolling_coeff=0.015
  ; Tire spring rate
  tire_rate=140000
  ; Braking capability in Nm (torque)
  max_braking=4000
  ; Brake factor (determines brake balance)
  braking_factor=.32
  ; Hand braking capability in Nm (torque)
  max_handbrake_torque=400
  model
  {
    file=tire_rr.dof
  }
  pacejka~pacejka_default
}
plate_common
{
  ; Center of the contact plate in local car (racer) coordinates
  x=0
  y=0
  z=0
  ; Width of the contact plate in m
  contact_patch_width=0.2
  ; Length of the contact plate in m
  contact_patch_length=0.2
}
plate0~plate_common
{
}
plate1~plate_common
{
}
plate2~plate_common
{
}
plate3~plate_common
{
}
plate4~plate_common
{
}
plate5~plate_common
{
}
plate6~plate_common
{
}
plate7~plate_common
{
}
camera0
{
  ; Vertical shearing of frustum? Normally defaults from the controller file's monitor controller are used
  ; which are project_down=0 and project_up=1
  ; Also work for camera1-camera9
  ;project_down=0
  ;project_up=1.0
  offset
  {
    x=0.001563
    y=-0.406250
    z=-4.755003
  }
  angle
  {
    x=15.138849
    y=180.173615
    z=0.000000
  }
  name=Behind
  ; Type of model to use; 0=outside (full model), 1=inside (cockpit model), 2=none
  model=0
  ; Display wheels?
  wheels=1
  ; Display steering wheel? (default 1)
  steering_wheel=1
  ; Display helmet? (default 1)
  show_helmet=1
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
  ;
  ; Head physics camera example (take off the 'X')
  ;
  Xhead_physics
  {
    ; Springs (given a head of ~6kg)
    lateral
    {
      k=8500
      damp=350
      ; Min/max in meters
      min=-10
      max=10
    }
    vertical
    {
      k=1000
      damp=225
      ; Min/max in meters
      min=-10
      max=10
    }
    longitudinal
    {
      k=1700
      damp=380
      ; Min/max in meters
      min=-10
      max=10
    }
    yaw
    {
      k=1700
      damp=380
      ; Min/max in radians
      min=-10
      max=10
    }
    pitch
    {
      k=700
      damp=150
      ; Min/max in radians
      min=-10
      max=10
    }
    roll
    {
      k=1700
      damp=380
      ; Min/max in radians
      min=-10
      max=10
    }
  }
}
camera1
{
  name=Side view Left
  offset
  {
    x=0
    y=0
    z=-4
  }
  angle
  {
    x=0
    y=-90
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
camera2
{
  name=Rear view
  offset
  {
    x=0
    y=-0.2
    z=-4.5
  }
  angle
  {
    x=0
    y=-180
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=1
  }
}
camera3
{
  name=Side view Right
  offset
  {
    x=0
    y=0
    z=-4
  }
  angle
  {
    x=0
    y=90
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
camera4
{
  name=Front view
  offset
  {
    x=0
    y=-0.2
    z=-4.0
  }
  angle
  {
    x=0
    y=0
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
camera5
{
  name=Quarter Left Front
  offset
  {
    x=0
    y=0
    z=-4
  }
  angle
  {
    x=0
    y=-45
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
camera6
{
  name=Quarter Left Rear
  offset
  {
    x=0
    y=0
    z=-4
  }
  angle
  {
    x=0
    y=-135
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
camera7
{
  name=Quarter Right Front
  offset
  {
    x=0
    y=0
    z=-4
  }
  angle
  {
    x=0
    y=45
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
camera8
{
  name=Quarter Right Rear
  offset
  {
    x=0
    y=0
    z=-4
  }
  angle
  {
    x=0
    y=135
    z=0
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
camera9
{
  name=Top
  offset
  {
    x=0
    y=0
    z=-6
  }
  angle
  {
    x=90
    y=0
    z=180
  }
  follow
  {
    pitch=0
    yaw=1
    roll=0
  }
}
scripts
{
  ; Load any Onyx scripts that add logic to this car?
  load=
}
;
; Rename 'ibeam_example' to 'ibeam' and add .crv files to use it
;
ibeam_example
{
  effects
  {
    engine
    {
      volume_factor=0.2
      volume=ibeam_rpm_to_volume.crv
      frequency_factor=1.0
      frequency=ibeam_rpm_to_frequency.crv
      ; Harmonics to determine the type of engine
      harmonics_factor=1.0 2.5
      harmonics_volume=1.0 1.0
    }
    road_noise
    {
      volume_factor=1
      volume=ibeam_vel_to_volume.crv
      frequency_factor=1.0
      frequency=ibeam_vel_to_frequency.crv
      wave=white_noise
      ; Influence of certain surface types
      grass_factor=2.0
      gravel_factor=3.5
      sand_factor=3.0
      ; Influence of under/oversteer (around 0..1)
      under_oversteer_factor=1.0
    }
    brakes
    {
      volume_factor=0.3
      volume=ibeam_brakes_to_volume.crv
      frequency=ibeam_brakes_to_frequency.crv
      ; Point at which to trigger the brake vibration
      trigger=0.5
      ; Duration (s) of the effect
      duration=1.0
      ; Waveform
      wave=sine
      harmonics_factor=1.0
      harmonics_volume=1.0
    }
    kerbs
    {
      volume_factor=1
      volume=ibeam_vel_to_volume.crv
      frequency=ibeam_vel_to_frequency_kerb.crv
      wave=square
    }
  }
}
