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/TravelMethod.h

Go to the documentation of this file.
00001 #ifndef TRAVEL_METHOD
00002 #define TRAVEL_METHOD
00003 
00004 #include <gmtl/Matrix.h>
00005 #include <ani/Dynamics/Body.h>
00006 #include <ani/Dynamics/DynamicSystem.h>
00007 #include <ani/Dynamics/Convert.h>
00008 #include <gator/CollisionDetector.h>
00009 #include <gator/CollisionDetectorPtr.h>
00010 #include <gator/PlaneCollisionDetector.h>
00011 #include "TravelPrimitive.h"
00012 #include "CollisionDetector.h"
00013 
00014 namespace gator
00015 {
00017    enum EdgeState
00018    {
00019       DOWN, UP, EDGE_DOWN, EDGE_UP
00020    };
00021 
00032    class TravelMethod : public ani::DynamicSystem<ani::Body>
00033    {
00034    public:
00035       TravelMethod() : mAvatar( new ani::Body ), 
00036                        mCamera( new ani::Body ),
00037                        mPlatform( new ani::Body ),
00038                        mCollisionDetector( new PlaneCollisionDetector )
00039       {
00040       }
00041 
00043       virtual void digitalInput( unsigned int id, EdgeState value ) = 0;
00044 
00046       virtual void analogInput( unsigned int id, float value ) = 0;
00047 
00049       virtual void xformInput( unsigned int id, const gmtl::Matrix44f& value ) = 0;
00050 
00056       ani::Body& avatar() { return *mAvatar; }
00057 
00063       ani::Body& camera() { return *mCamera; }
00064 
00071       ani::Body& platform() { return *mPlatform; }
00072       
00077       virtual void setCollisionDetector( CollisionDetectorPtr& detect )
00078       {
00079          mCollisionDetector = detect;
00080       }
00081 
00082    public:
00083       virtual void setPosition( const gmtl::Matrix44f& value ) = 0;
00084       virtual gmtl::Matrix44f getPosition() = 0;
00085       virtual void setHomePosition( const gmtl::Matrix44f& value ) 
00086       { 
00087          mHome = value;
00088       }
00089       virtual void reset()
00090       { 
00091          this->setPosition( mHome ); 
00092          mAvatar->setVelocity( gmtl::Vec3f( 0,0,0 ) );
00093       }
00094       void setName( std::string s ) { mName = s; }
00095       std::string getName() { return mName; }
00096       
00097    protected:
00102       ani::BodyPtr mAvatar, mCamera, mPlatform;
00103 
00107       CollisionDetectorPtr mCollisionDetector;
00108 private:
00109 
00110       gmtl::Matrix44f mHome;
00111       std::string mName;
00112       
00116       /*#CollisionDetector lnkCollisionDetector1; */
00117 
00121       /*#TravelPrimitive lnkTravelPrimitive; */
00122 protected:
00123    };
00124 } // end namespace gator
00125 
00126 #endif

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