Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

c:/home/kevn/src/animaniac/gator/SimpleDriveMethod.h

Go to the documentation of this file.
00001 #ifndef SIMPLE_DRIVE_METHOD
00002 #define SIMPLE_DRIVE_METHOD
00003 
00004 #include <gator/TravelMethod.h>
00005 #include "ani/Dynamics/Body.h"
00006 #include "ani/Dynamics/Operator.h"
00007 #include "ani/Dynamics/solvers/EulerODEsolver.h"
00008 #include "ani/Dynamics/solvers/RungeKuttaODEsolver.h"
00009 #include "ani/Dynamics/DynamicSystem.h"
00010 
00011 #include "gator/TireForceOperator.h"
00012 #include "gator/AccelerateOperator.h"
00013 #include "gator/GravityOperator.h"
00014 #include "gator/DriveOperator.h"
00015 #include "gator/CollisionResponseOperator.h"
00016 #include "gator/SetEqualOperator.h"
00017 #include "gator/SimpleFlyMethod.h"
00018 
00019 namespace gator
00020 {
00024    class SimpleDriveMethod : public SimpleFlyMethod
00025    {
00026    public:
00027       SimpleDriveMethod() : SimpleFlyMethod()
00028       {
00029          // add gravity to the fly method.
00030          boost::shared_ptr<ani::Operator<ani::Body> > gravity( new Acceleration( 0, -9.81 * 4.0f, 0 ) );
00031          mCollider->setElastic( 0.2f );
00032          mTireForce->setAirSteering( false );
00033          mAvatar->setPosition( gmtl::Vec3f( 0,0,0 ));
00034          this->push_front( gravity );
00035       }
00036 
00038       virtual void digitalInput( unsigned int id, EdgeState value )
00039       {
00040          switch (id)
00041          {
00042          case 4: // jump
00043             {
00044                gmtl::Vec3f accel( 0, 25, 0 );
00045                if (value == EDGE_DOWN)
00046                   mNavigator->impulseForce( accel * mAvatar->mass() );
00047                break;
00048             }
00049          case 5: // drop 
00050             break;
00051          default:
00052             SimpleFlyMethod::digitalInput( id, value );
00053             break;
00054          }
00055       }
00056 
00058       virtual void analogInput( unsigned int id, float value )
00059       {
00060          switch (id)
00061          {
00062          case 0: // turn left or right.
00063             gmtl::Vec3f q;
00064             q.set( 0.0f, value, 0.0f );
00065             mNavigator->torque( q );
00066             break;
00067          }
00068       }
00069 
00071       virtual void xformInput( unsigned int id, const gmtl::Matrix44f& value )
00072       {
00073          SimpleFlyMethod::xformInput( id, value );
00074       }
00075    private:        
00076 
00078       /*#  Gravity lnkGravity; */
00079 };
00080 } // end namespace gator
00081 
00082 #endif

Generated on Wed Jun 12 01:54:03 2002 for Animaniac by doxygen1.2.15