Vamos_Body::Car Class Reference

#include <Car.h>

Inheritance diagram for Vamos_Body::Car:

Inheritance graph
[legend]
Collaboration diagram for Vamos_Body::Car:

Collaboration graph
[legend]
List of all members.

Public Member Functions

int get_controller ()
void set_controller (int newc)
 Car (const Vamos_Geometry::Three_Vector &pos)
virtual ~Car ()
virtual void SetReflectionTexture (TEXTURE_HANDLE *reftid)
Rigid_Bodychassis ()
 !
void read (std::string data_dir="", std::string car_file="")
virtual void engine_sound (std::string file, double volume, double throttle_volume_factor, double engine_speed_volume_factor, double pitch)=0
virtual void exterior_model (std::string file, double scale, const Vamos_Geometry::Three_Vector &translation, const Vamos_Geometry::Three_Vector &rotation)=0
virtual void interior_model (std::string file, double scale, const Vamos_Geometry::Three_Vector &translation, const Vamos_Geometry::Three_Vector &rotation)=0
virtual void dashboard (Dashboard *dash)=0
virtual void propagate (double time)
void pan (double factor, double time=0.0)
void steer (double angle, double time=0.0)
void gas (double factor, double time=0.0)
void brake (double factor, double time=0.0)
double steer ()
double gas ()
double brake ()
double max_steer_angle ()
void handbrake (double factor, double time=0.0)
int shift_down ()
int shift_up ()
int shift (int gear)
void clutch (double factor, double time=0.0)
void engage_clutch (double time)
void disengage_clutch (double time)
void start_engine ()
void brake_bias (double bias)
void max_steer_angle (double degree_angle)
void steer_exponent (double exponent)
void steer_speed_sensitivity (double sensitivity)
void shift_delay (double time)
void clutch_time (double from_neutral, double others)
double slide () const
Wheelwheel (int wheel_index) const
Particlefront_particle () const
Engineengine ()
Transmissiontransmission ()
Fuel_Tankfuel_tank ()
int gear () const
int last_gear () const
void reset ()
void reset (const Vamos_Geometry::Three_Vector &position, const Vamos_Geometry::Three_Matrix &orientation)
double distance_traveled () const
void drivetrain (Drivetrain *drive)
void view_position (const Vamos_Geometry::Three_Vector &driver_view)
void field_of_view (double field)
virtual void set_view (const Vamos_Geometry::Three_Vector &position, double field_of_view, double near_plane, double far_plane, double pan_angle)
virtual void set_perspective (double aspect)
virtual void add_rear_view (const Vamos_Geometry::Three_Vector &position, double width, double height, double direction, double field, double near_plane, double far_plane, std::string mask_file)
double field_of_view () const
double pan () const
Vamos_Geometry::Three_Vector view_position () const
virtual TEXTURE_HANDLEshadow_texture ()
virtual void draw (bool transform)
virtual void draw_interior ()
virtual void draw_rear_view (double aspect, int index)
virtual void make_rear_view_mask (int window_width, int window_height)
virtual int get_n_mirrors () const
virtual void view (double pan, const Vamos_Geometry::Three_Vector &view_position)
virtual void view (double pan)
virtual Vamos_Geometry::Sampleengine_sound ()=0
virtual double engine_pitch ()
virtual double engine_volume ()
virtual int GetSoundSource ()
virtual int GetTireSoundSource (int i)
bool fast_shift () const
void show_dashboard_extras (bool show)
bool collision (const Vamos_Geometry::Three_Vector &position) const
bool ShiftPending ()
void GetState (Vamos_Geometry::Three_Vector &chassispos, Vamos_Geometry::Three_Matrix &chassisorientation, Vamos_Geometry::Three_Vector &chassisvel, Vamos_Geometry::Three_Vector &chassisangvel, double *suspdisp, double *suspcompvel, Vamos_Geometry::Three_Vector *whlangvel, int &gear, double &enginespeed, double &clutchspeed, double &enginedrag, double *tirespeed)
void SetState (Vamos_Geometry::Three_Vector chassispos, Vamos_Geometry::Three_Matrix chassisorientation, Vamos_Geometry::Three_Vector chassisvel, Vamos_Geometry::Three_Vector chassisangvel, double *suspdisp, double *suspcompvel, Vamos_Geometry::Three_Vector *whlangvel, int gear, double enginespeed, double clutchspeed, double enginedrag, double *tirespeed)
virtual JOEMODELGetCollisionModel ()
void SetSector (int newsector)
int GetSector ()
void SetColPatch (int i, BEZIER *newcolpatch)
BEZIERGetColPatch (int i)
void SetColParams (int i, double f1, double f2, double rr, double rd)

Public Attributes

Vamos_Geometry::Three_Vector car_lastpos
float brakesetting

Protected Member Functions

void private_reset ()

Protected Attributes

std::string m_car_file
Rigid_Body m_chassis
Drivetrainmp_drivetrain
Fuel_Tankmp_fuel_tank
double m_front_brake_bias
double m_max_steer_angle
double m_steer_exponent
double m_steer_speed_sensitivity
double m_slide
bool m_shift_pending
double m_shift_timer
double m_shift_delay
int m_new_gear
int m_last_gear
Key_Control m_steer_key_control
Key_Control m_gas_key_control
Key_Control m_brake_key_control
Key_Control m_handbrake_key_control
Key_Control m_clutch_key_control
Key_Control m_pan_key_control
Particlemp_front_particle
double m_distance_traveled
Vamos_Geometry::Three_Vector m_driver_view
double m_field_of_view
double m_pan_angle
bool m_show_dashboard_extras
std::vector< Wheel * > m_wheels
int controller
int m_sector
BEZIERm_colpatches [4]

Private Member Functions

bool LoadCarDefinition (string carfile)
bool LoadParts ()
bool LoadPart (string partfile)

Private Attributes

std::string m_data_dir
Crash_Box m_crash_box
CONFIGFILE m_car_definition
std::vector< Vamos_Geometry::Two_Pointm_tpoints

Classes

struct  Crash_Box

Detailed Description

Definition at line 114 of file Car.h.


Constructor & Destructor Documentation

Vamos_Body::Car::Car const Vamos_Geometry::Three_Vector pos  ) 
 

Definition at line 156 of file Car.cc.

References brakesetting, and controller.

Vamos_Body::Car::~Car  )  [virtual]
 

Definition at line 186 of file Car.cc.

References m_wheels, mp_drivetrain, mp_fuel_tank, and verbose_output.


Member Function Documentation

virtual void Vamos_Body::Car::add_rear_view const Vamos_Geometry::Three_Vector position,
double  width,
double  height,
double  direction,
double  field,
double  near_plane,
double  far_plane,
std::string  mask_file
[inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 401 of file Car.h.

double Vamos_Body::Car::brake  )  [inline]
 

Definition at line 300 of file Car.h.

References m_brake_key_control, and Vamos_Body::Key_Control::value().

void Vamos_Body::Car::brake double  factor,
double  time = 0.0
 

Definition at line 432 of file Car.cc.

References m_brake_key_control, and Vamos_Body::Key_Control::target().

Referenced by VAMOSWORLD::DoOp().

void Vamos_Body::Car::brake_bias double  bias  ) 
 

Definition at line 515 of file Car.cc.

References m_front_brake_bias.

Rigid_Body& Vamos_Body::Car::chassis  )  [inline]
 

!

Definition at line 253 of file Car.h.

References m_chassis.

Referenced by Vamos_World::World::add_car(), Vamos_World::World::collide(), VAMOSWORLD::draw_shadows(), Vamos_World::World::gravity(), Vamos_World::World::interact(), and SelectCar().

void Vamos_Body::Car::clutch double  factor,
double  time = 0.0
 

Definition at line 483 of file Car.cc.

References m_clutch_key_control, and Vamos_Body::Key_Control::target().

Referenced by VAMOSWORLD::DoOp().

void Vamos_Body::Car::clutch_time double  from_neutral,
double  others
 

bool Vamos_Body::Car::collision const Vamos_Geometry::Three_Vector position  )  const
 

Definition at line 574 of file Car.cc.

References m_chassis, m_crash_box, Vamos_Body::Frame::transform_in(), and Vamos_Body::Car::Crash_Box::within().

Referenced by Vamos_World::World::collide().

virtual void Vamos_Body::Car::dashboard Dashboard dash  )  [pure virtual]
 

Implemented in Vamos_Body::Gl_Car.

void Vamos_Body::Car::disengage_clutch double  time  ) 
 

Definition at line 499 of file Car.cc.

References m_clutch_key_control, m_shift_delay, m_shift_timer, and Vamos_Body::Key_Control::target().

Referenced by VAMOSWORLD::DoOp().

double Vamos_Body::Car::distance_traveled  )  const [inline]
 

Definition at line 382 of file Car.h.

References m_distance_traveled.

virtual void Vamos_Body::Car::draw bool  transform  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 421 of file Car.h.

virtual void Vamos_Body::Car::draw_interior  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 422 of file Car.h.

virtual void Vamos_Body::Car::draw_rear_view double  aspect,
int  index
[inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 423 of file Car.h.

void Vamos_Body::Car::drivetrain Drivetrain drive  ) 
 

Definition at line 565 of file Car.cc.

References mp_drivetrain.

void Vamos_Body::Car::engage_clutch double  time  ) 
 

Definition at line 490 of file Car.cc.

References m_clutch_key_control, m_shift_delay, m_shift_timer, and Vamos_Body::Key_Control::target().

Referenced by VAMOSWORLD::DoOp().

Engine* Vamos_Body::Car::engine  )  [inline]
 

Definition at line 353 of file Car.h.

References Vamos_Body::Drivetrain::engine(), and mp_drivetrain.

Referenced by Vamos_Body::Gl_Car::draw_dashboard(), Vamos_Body::Gl_Car::draw_dashboard_extras(), Vamos_Body::Gl_Car::engine_pitch(), and Vamos_Body::Gl_Car::engine_volume().

virtual double Vamos_Body::Car::engine_pitch  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 437 of file Car.h.

virtual Vamos_Geometry::Sample* Vamos_Body::Car::engine_sound  )  [pure virtual]
 

Implemented in Vamos_Body::Gl_Car.

Referenced by LoadCarDefinition().

virtual void Vamos_Body::Car::engine_sound std::string  file,
double  volume,
double  throttle_volume_factor,
double  engine_speed_volume_factor,
double  pitch
[pure virtual]
 

Implemented in Vamos_Body::Gl_Car.

virtual double Vamos_Body::Car::engine_volume  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 438 of file Car.h.

virtual void Vamos_Body::Car::exterior_model std::string  file,
double  scale,
const Vamos_Geometry::Three_Vector translation,
const Vamos_Geometry::Three_Vector rotation
[pure virtual]
 

Implemented in Vamos_Body::Gl_Car.

bool Vamos_Body::Car::fast_shift  )  const [inline]
 

Definition at line 444 of file Car.h.

References m_shift_delay.

double Vamos_Body::Car::field_of_view  )  const [inline]
 

Definition at line 408 of file Car.h.

References m_field_of_view.

Referenced by Vamos_Body::Gl_Car::make_rear_view_mask().

void Vamos_Body::Car::field_of_view double  field  )  [inline]
 

Definition at line 391 of file Car.h.

References m_field_of_view.

Particle* Vamos_Body::Car::front_particle  )  const [inline]
 

Definition at line 350 of file Car.h.

References mp_front_particle.

Fuel_Tank* Vamos_Body::Car::fuel_tank  )  [inline]
 

Definition at line 359 of file Car.h.

References mp_fuel_tank.

Referenced by Vamos_Body::Gl_Car::draw_dashboard(), VAMOSWORLD::DrawHUD(), and VAMOSWORLD::FuelPlayerCar().

double Vamos_Body::Car::gas  )  [inline]
 

Definition at line 297 of file Car.h.

References m_gas_key_control, and Vamos_Body::Key_Control::value().

Referenced by propagate().

void Vamos_Body::Car::gas double  factor,
double  time = 0.0
 

Definition at line 425 of file Car.cc.

References m_gas_key_control, and Vamos_Body::Key_Control::target().

Referenced by VAMOSWORLD::DoOp().

int Vamos_Body::Car::gear  )  const [inline]
 

Definition at line 364 of file Car.h.

References m_new_gear.

Referenced by Vamos_Body::Gl_Car::draw_dashboard(), and Vamos_Body::Gl_Car::draw_dashboard_extras().

int Vamos_Body::Car::get_controller  )  [inline]
 

Definition at line 239 of file Car.h.

References controller.

virtual int Vamos_Body::Car::get_n_mirrors  )  const [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 426 of file Car.h.

virtual JOEMODEL* Vamos_Body::Car::GetCollisionModel  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 482 of file Car.h.

References NULL.

Referenced by Vamos_World::World::interact().

BEZIER* Vamos_Body::Car::GetColPatch int  i  )  [inline]
 

Definition at line 487 of file Car.h.

References m_colpatches, and NULL.

int Vamos_Body::Car::GetSector  )  [inline]
 

Definition at line 485 of file Car.h.

References m_sector.

virtual int Vamos_Body::Car::GetSoundSource  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 440 of file Car.h.

void Vamos_Body::Car::GetState Vamos_Geometry::Three_Vector chassispos,
Vamos_Geometry::Three_Matrix chassisorientation,
Vamos_Geometry::Three_Vector chassisvel,
Vamos_Geometry::Three_Vector chassisangvel,
double *  suspdisp,
double *  suspcompvel,
Vamos_Geometry::Three_Vector whlangvel,
int &  gear,
double &  enginespeed,
double &  clutchspeed,
double &  enginedrag,
double *  tirespeed
 

Definition at line 1602 of file Car.cc.

References Vamos_Body::Frame::ang_velocity(), Vamos_Body::Rigid_Body::cm_velocity(), m_chassis, m_wheels, Vamos_Body::Frame::orientation(), and Vamos_Body::Rigid_Body::position().

virtual int Vamos_Body::Car::GetTireSoundSource int  i  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 441 of file Car.h.

void Vamos_Body::Car::handbrake double  factor,
double  time = 0.0
 

Definition at line 439 of file Car.cc.

References m_handbrake_key_control, and Vamos_Body::Key_Control::target().

Referenced by VAMOSWORLD::DoOp().

virtual void Vamos_Body::Car::interior_model std::string  file,
double  scale,
const Vamos_Geometry::Three_Vector translation,
const Vamos_Geometry::Three_Vector rotation
[pure virtual]
 

Implemented in Vamos_Body::Gl_Car.

int Vamos_Body::Car::last_gear  )  const [inline]
 

Definition at line 367 of file Car.h.

References m_last_gear.

Referenced by VAMOSWORLD::DoOp().

bool Vamos_Body::Car::LoadCarDefinition string  carfile  )  [private]
 

Definition at line 1703 of file Car.cc.

References CONFIGFILE::Clear(), engine_sound(), Vamos_Body::Transmission::gear_ratio(), CONFIGFILE::GetParam(), SETTINGS::GetSettingsDir(), CONFIGFILE::Load(), LoadParts(), m_car_definition, m_car_file, m_data_dir, m_tpoints, Vamos_Geometry::Three_Vector::m_vec, max_steer_angle(), Vamos_Body::Engine::set_friction(), Vamos_Body::Engine::set_torque_curve(), set_view(), settings, shift_delay(), steer_exponent(), steer_speed_sensitivity(), CONFIGFILE::SuppressError(), verbose_output, Vamos_Geometry::Two_Point::x, and Vamos_Geometry::Two_Point::y.

bool Vamos_Body::Car::LoadPart string  partfile  )  [private]
 

Definition at line 2618 of file Car.cc.

References SETTINGS::GetFullDataPath(), CONFIGVARIABLE::GetFullName(), CONFIGFILE::GetHead(), CONFIGFILE::GetParam(), m_car_definition, CONFIGVARIABLE::next, NULL, CONFIGFILE::SetParam(), and settings.

Referenced by LoadParts().

bool Vamos_Body::Car::LoadParts  )  [private]
 

Definition at line 2592 of file Car.cc.

References CONFIGFILE::GetParam(), LoadPart(), m_car_definition, and CONFIGFILE::SuppressError().

Referenced by LoadCarDefinition().

virtual void Vamos_Body::Car::make_rear_view_mask int  window_width,
int  window_height
[inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 424 of file Car.h.

void Vamos_Body::Car::max_steer_angle double  degree_angle  )  [inline]
 

Definition at line 326 of file Car.h.

References m_max_steer_angle.

double Vamos_Body::Car::max_steer_angle  )  [inline]
 

Definition at line 303 of file Car.h.

References m_max_steer_angle.

Referenced by LoadCarDefinition().

double Vamos_Body::Car::pan  )  const [inline]
 

Definition at line 411 of file Car.h.

References m_pan_key_control, and Vamos_Body::Key_Control::value().

void Vamos_Body::Car::pan double  factor,
double  time = 0.0
 

Definition at line 446 of file Car.cc.

References m_pan_angle, m_pan_key_control, and Vamos_Body::Key_Control::target().

void Vamos_Body::Car::private_reset  )  [protected]
 

Definition at line 557 of file Car.cc.

References mp_drivetrain, Vamos_Body::Drivetrain::reset(), shift(), and start_engine().

Referenced by reset().

void Vamos_Body::Car::propagate double  time  )  [virtual]
 

Definition at line 286 of file Car.cc.

References Vamos_Body::Fuel_Tank::empty(), gas(), m_brake_key_control, m_clutch_key_control, m_gas_key_control, m_handbrake_key_control, m_new_gear, m_pan_key_control, m_shift_delay, m_shift_pending, m_shift_timer, m_steer_key_control, mp_drivetrain, mp_fuel_tank, Vamos_Body::Transmission::shift(), Vamos_Body::Drivetrain::transmission(), Vamos_Body::Key_Control::update(), and Vamos_Body::Key_Control::value().

void Vamos_Body::Car::read std::string  data_dir = "",
std::string  car_file = ""
 

Definition at line 205 of file Car.cc.

References m_car_file, m_data_dir, and m_wheels.

Referenced by VGUI::SpinningCar::LoadCar(), and SelectCar().

void Vamos_Body::Car::reset const Vamos_Geometry::Three_Vector position,
const Vamos_Geometry::Three_Matrix orientation
 

Definition at line 541 of file Car.cc.

References m_chassis, private_reset(), and Vamos_Body::Rigid_Body::reset().

void Vamos_Body::Car::reset  ) 
 

Definition at line 549 of file Car.cc.

References m_chassis, private_reset(), and Vamos_Body::Rigid_Body::reset().

Referenced by Vamos_World::Car_Information::reset().

void Vamos_Body::Car::set_controller int  newc  )  [inline]
 

Definition at line 240 of file Car.h.

References controller.

Referenced by SelectCar().

virtual void Vamos_Body::Car::set_perspective double  aspect  )  [inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 398 of file Car.h.

virtual void Vamos_Body::Car::set_view const Vamos_Geometry::Three_Vector position,
double  field_of_view,
double  near_plane,
double  far_plane,
double  pan_angle
[inline, virtual]
 

Reimplemented in Vamos_Body::Gl_Car.

Definition at line 393 of file Car.h.

Referenced by LoadCarDefinition().

void Vamos_Body::Car::SetColParams int  i,
double  f1,
double  f2,
double  rr,
double  rd
 

Definition at line 2659 of file Car.cc.

References Vamos_Body::Wheel::SetColParams(), and wheel().

void Vamos_Body::Car::SetColPatch int  i,
BEZIER newcolpatch
[inline]
 

Definition at line 486 of file Car.h.

References m_colpatches.