objectcontroller.h

Go to the documentation of this file.
00001 #ifndef OBJECTCONTROLLER_H
00002 #define OBJECTCONTROLLER_H
00003 
00004 #include "lugre_smartptr.h"
00005 
00006 #include <OgreVector3.h>
00007 #include <OgreQuaternion.h>
00008 using Ogre::Vector3;
00009 using Ogre::Quaternion;
00010 using namespace Lugre;
00011 
00012 class lua_State;
00013 class cObject;
00014 
00015 class cObjectContollerTarget { public:
00016     // only call if alive
00017     virtual Vector3 GetPosition() = 0;
00018     virtual Vector3 GetVelocity() = 0;
00019     
00020     virtual bool    IsAlive() = 0;
00021     
00022     virtual ~cObjectContollerTarget();
00023 };
00024 
00025 class cObjectContollerTargetObject : public cObjectContollerTarget { public:
00026     cSmartPtr<cObject>  mpApproachObject;
00027     
00028     // only call if alive
00029     virtual Vector3 GetPosition();
00030     virtual Vector3 GetVelocity();
00031     
00032     virtual bool    IsAlive();
00033 
00034     cObjectContollerTargetObject(cObject* pObject);
00035     virtual ~cObjectContollerTargetObject();
00036 };
00037 
00038 class cObjectContollerTargetPosition : public cObjectContollerTarget { public:
00039     Vector3 mvPosition;
00040     
00041     // only call if alive
00042     virtual Vector3 GetPosition();
00043     virtual Vector3 GetVelocity();
00044 
00045     virtual bool    IsAlive();
00046 
00047     cObjectContollerTargetPosition(Vector3 vPosition);
00048     virtual ~cObjectContollerTargetPosition();
00049 };
00050 
00052 class cObjectController : public cSmartPointable { public :
00053     cObjectContollerTarget* mpApproachTarget;
00054     float                   mfApproachMinDist;
00055     float                   mfMaxAccel;
00056     float                   mfMaxSpeed;
00057     bool                    mbStupid;
00058     
00059              cObjectController  ();
00060     virtual ~cObjectController  ();
00061     
00062     // the controller takes over the ownership of the target pointer
00063     // never touch the pointer again!!
00064     void    SetTarget   (cObjectContollerTarget *pTarget);
00065     
00066     void    Lock    (); 
00067     void    Release (); 
00068     void    Step    (cObject* pObj);
00069     
00070     // lua binding
00071     static void     LuaRegister     (lua_State *L);
00072     
00073     private:
00074     int     miControlledObjectCount; 
00075 };
00076 
00077 #endif

Generated on Wed May 23 06:00:13 2012 for cpp by  doxygen 1.5.6