00001 #ifndef VECTRACER_CRAFT_H 00002 #define VECTRACER_CRAFT_H 00003 00004 /* 00005 ----------------------------------------------------------------------------- 00006 Filename: Craft.h 00007 Description: A player (probably) controlled craft. Herein lies the actual racing-thing. 00008 ----------------------------------------------------------------------------- 00009 */ 00010 00011 #include "Common.h" 00012 #include "SelectableObject.h" 00013 #include "TrackPhysicalObject.h" 00014 00015 #include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" 00016 00017 class btVehicleTuning; 00018 struct btVehicleRaycaster; 00019 class btCollisionShape; 00020 00021 #define USE_BULLET_RAY 00022 #define USE_BULLET_VEHICLE 00023 //#define USE_SPRING 00024 00025 #ifdef USE_BULLET_VEHICLE 00026 #include "BulletDynamics/Vehicle/btRaycastVehicle.h" 00027 #endif 00028 00029 class Craft : public SelectableObject 00030 { 00031 public: 00032 00033 Craft(); 00034 00035 bool move(Ogre::Real _time); 00036 00037 bool makePhysical(); 00038 00039 void projectDecal(); 00040 00041 Ogre::Real getThrustForward(); 00042 Ogre::Real getThrustBackward(); 00043 Ogre::Real getTurnForce(); 00044 00045 Ogre::Real getEngineThrustForward(); 00046 Ogre::Real getEngineThrustBackward(); 00047 Ogre::Real getEngineTurnForce(); 00048 00049 Ogre::Real getFalseFriction(); 00050 00051 void setThrustForward(Ogre::Real& _val); 00052 void setThrustBackward(Ogre::Real& _val); 00053 void setTurnForce(Ogre::Real& _val); 00054 00055 void setEngineThrustForward(Ogre::Real& _val); 00056 void setEngineThrustBackward(Ogre::Real& _val); 00057 void setEngineTurnForce(Ogre::Real& _val); 00058 00059 void setFalseFriction(Ogre::Real& _val); 00060 00061 void tryResetPosition(); 00062 00063 protected: 00064 00065 Ogre::Real m_thrustForward; 00066 Ogre::Real m_thrustBackward; 00067 Ogre::Real m_turnForce; 00068 00069 Ogre::Real m_engineThrustForward; 00070 Ogre::Real m_engineThrustBackward; 00071 Ogre::Real m_engineTurnForce; 00072 00073 Ogre::Real m_turnCompensation; 00074 00075 Ogre::Real m_falseFriction; 00076 00077 Ogre::Real m_thrustForwardDefault; 00078 Ogre::Real m_thrustBackwardDefault; 00079 Ogre::Real m_turnForceDefault; 00080 00081 Ogre::Real m_engineThrustForwardDefault; 00082 Ogre::Real m_engineThrustBackwardDefault; 00083 Ogre::Real m_engineTurnForceDefault; 00084 00085 Ogre::Real m_falseFrictionDefault; 00086 00087 Ogre::Vector3 m_turnForcePosition; 00088 00089 Ogre::Real m_selfRightRate; 00090 00091 Ogre::Real m_heightDesired; 00092 Ogre::Real m_heightCurrent; 00093 Ogre::Real m_heightLast; 00094 Ogre::Real m_heightSpring; 00095 Ogre::Real m_heightDamp; 00096 Ogre::Real m_heightLoseContact; 00097 00098 Ogre::ManualObject* m_rayCast; 00099 00100 Ogre::Frustum* m_trackProjectFrustum; 00101 Ogre::Frustum* m_wallProjectFrustum; 00102 00103 Ogre::SceneNode* m_trackProjectNode; 00104 Ogre::SceneNode* m_wallProjectNode; 00105 00106 std::string m_trackDecalName; 00107 std::string m_wallDecalName; 00108 00109 std::string m_trackMaterialName; 00110 std::string m_wallMaterialName; 00111 Ogre::ColourValue m_trackDecalColour; 00112 Ogre::ColourValue m_wallDecalColour; 00113 #ifdef USE_OGRE_RAY 00114 Ogre::RaySceneQuery* m_trackSeekRay; 00115 #endif 00116 TrackPhysicalObject* m_currentTrackSection; 00117 00118 Ogre::Vector3 m_trackRelativeUp; 00119 00120 btGeneric6DofConstraint* m_constraintUpright; 00121 00122 #ifdef USE_BULLET_VEHICLE 00123 btRaycastVehicle::btVehicleTuning m_vehicleTuning; 00124 btVehicleRaycaster* m_vehicleRayCaster; 00125 btRaycastVehicle* m_vehicle; 00126 btCollisionShape* m_wheelCollisionShape; 00127 #endif 00128 OgreBulletDynamics::RigidBody* m_balancer; 00129 00130 }; 00131 00132 #endif