random_racer/src/BuggyCar.h

Go to the documentation of this file.
00001 
00002 #ifndef _VRSODE_BUGGY_CAR_H_
00003 #define _VRSODE_BUGGY_CAR_H_
00004 
00005 #include "Car.h"
00006 
00007 #include "vrsode/CollisionSpaceSimple.h"
00008 #include "vrsode/PhysicsBody.h"
00009 #include "vrsode/PhysicsJointHinge.h"
00010 #include "vrsode/PhysicsJointHinge2.h"
00011 #include "vrsode/PhysicsJointSlider.h"
00012 
00013 #include <vrs/sharedobj.h>
00014 #include <vrs/camera.h>
00015 #include <vrs/sg/scenething.h>
00016 
00017 namespace VRS
00018 {
00019 class Translation;
00020 } // namespace VRS
00021 
00022 
00023 namespace random_racer
00024 {
00025 
00026 class BuggyCar : public Car
00027 {
00028     double m_springLengthFront;
00029     double m_springLengthRear;
00030     double m_springPowerFront;
00031     double m_springPowerRear;
00032     double m_springSpeedFront;
00033     double m_springSpeedRear;
00034 
00035     double m_wheelRad;
00036     double m_wheelWidth;
00037 
00038     double m_wheelMass;
00039     double m_bodyMass;
00040     double m_helperMass;
00041 
00042     double m_carMaxSpeed;
00043     double m_carPower;
00044     
00045     double m_suspensionSoftness;
00046     
00047     double m_steeringRadius;
00048     
00049     double m_wheelMu;
00050     double m_wheelSlip1;
00051     double m_wheelSlip2;
00052     
00053     VRS::Vector m_wheelOffsetFL;
00054     VRS::Vector m_wheelOffsetFR;
00055     VRS::Vector m_wheelOffsetRL;
00056     VRS::Vector m_wheelOffsetRR;
00057     VRS::Vector m_axisOffsetFL;
00058     VRS::Vector m_axisOffsetFR;
00059     VRS::Vector m_axisOffsetRL;
00060     VRS::Vector m_axisOffsetRR;
00061     VRS::Vector m_chassisOffset;
00062 
00063     VRS::Vector m_suspensionOffsetFL;
00064     VRS::Vector m_suspensionOffsetFR;
00065     VRS::Vector m_suspensionOffsetRL;
00066     VRS::Vector m_suspensionOffsetRR;
00067 
00068     VRS::Vector m_steerOffsetFL;
00069     VRS::Vector m_steerOffsetFR;
00070     
00071     VRS::Vector m_suspensionSoftnessOffsetFL;
00072     VRS::Vector m_suspensionSoftnessOffsetFR;
00073     VRS::Vector m_suspensionSoftnessOffsetRL;
00074     VRS::Vector m_suspensionSoftnessOffsetRR;
00075     
00076     
00077     VRS::SO<vrsode::PhysicsBody> m_hook;
00078     VRS::SO<vrsode::PhysicsJointSlider> m_hookJoint;
00079     
00080     VRS::SO<VRS::SceneThing> m_rootNode;
00081     VRS::SO<vrsode::PhysicsBody> m_chassis;
00082 
00083     VRS::SO<vrsode::PhysicsBody> m_wheelFL;
00084     VRS::SO<vrsode::PhysicsBody> m_wheelFR;
00085     VRS::SO<vrsode::PhysicsBody> m_wheelRL;
00086     VRS::SO<vrsode::PhysicsBody> m_wheelRR;
00087 
00088     VRS::SO<vrsode::PhysicsBody> m_springFL;
00089     VRS::SO<vrsode::PhysicsBody> m_springFR;
00090     VRS::SO<vrsode::PhysicsBody> m_springRL;
00091     VRS::SO<vrsode::PhysicsBody> m_springRR;
00092 
00093     VRS::SO<vrsode::PhysicsBody> m_suspensionFL;
00094     VRS::SO<vrsode::PhysicsBody> m_suspensionFR;
00095     VRS::SO<vrsode::PhysicsBody> m_suspensionRL;
00096     VRS::SO<vrsode::PhysicsBody> m_suspensionRR;
00097 
00098     VRS::SO<vrsode::PhysicsBody> m_steerFL;
00099     VRS::SO<vrsode::PhysicsBody> m_steerFR;
00100 
00101     VRS::SO<vrsode::PhysicsJointHinge> m_axisFL;
00102     VRS::SO<vrsode::PhysicsJointHinge> m_axisFR;
00103     VRS::SO<vrsode::PhysicsJointHinge> m_axisRL;
00104     VRS::SO<vrsode::PhysicsJointHinge> m_axisRR;
00105 
00106     VRS::SO<vrsode::PhysicsJointHinge> m_suspensionSoftnessFL;
00107     VRS::SO<vrsode::PhysicsJointHinge> m_suspensionSoftnessFR;
00108     VRS::SO<vrsode::PhysicsJointHinge> m_suspensionSoftnessRL;
00109     VRS::SO<vrsode::PhysicsJointHinge> m_suspensionSoftnessRR;
00110 
00111     VRS::SO<vrsode::PhysicsJointHinge> m_steerControlFL;
00112     VRS::SO<vrsode::PhysicsJointHinge> m_steerControlFR;
00113 
00114     VRS::SO<vrsode::PhysicsJointSlider> m_springSliderFL;
00115     VRS::SO<vrsode::PhysicsJointSlider> m_springSliderFR;
00116     VRS::SO<vrsode::PhysicsJointSlider> m_springSliderRL;
00117     VRS::SO<vrsode::PhysicsJointSlider> m_springSliderRR;
00118 
00119     void enableAllBodies();
00120 
00121 public:
00122     BuggyCar(VRS::SO<VRS::SceneThing>);
00123     ~BuggyCar();
00124 
00129     void accelerate(double);
00130 
00131     void steer(double);
00132 
00133     void handBreak(double);
00134 
00135     void nitro(double);
00136 
00137     VRS::SO<VRS::SceneThing> sceneThing();
00138 
00139     void attachCamera(VRS::SO<VRS::Camera>);
00140 
00145     void setPosition(VRS::Vector);
00146 
00151     void setPosition(double, double, double);
00152 
00156     VRS::Vector position();
00157 
00162      inline VRS::SO<vrsode::CollisionBody> cameraHook()
00163      {
00164          return m_hook;
00165      }
00166      
00167      inline VRS::SO<vrsode::CollisionBody> chassis()
00168      {
00169          return m_chassis;
00170      }
00171     
00172     
00173 };
00174 
00175 }
00176 
00177 #endif

Generated on Fri May 11 21:01:57 2007 for Random Racer by  doxygen 1.5.1