00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FF3DGuidanceAgent_H
00024 #define FF3DGuidanceAgent_H
00025 #include "micolelib.h"
00026
00027 #include <Child.h>
00028 #include "FF3DForceModel.h"
00029 #include "ReachinMicoleApplication.h"
00030 #include "MicoleAgent.h"
00031
00046 class MICOLELIB_API FF3DGuidanceAgent : public Child, public MicoleAgent
00047 {
00048 public:
00053 FF3DGuidanceAgent();
00054 virtual ~FF3DGuidanceAgent();
00055
00062 void setForceModel(FF3DForceModel * fm)
00063 {
00064 if (_fm=fm)
00065 {
00066 return;
00067 }
00068 if (_fm)
00069 {
00070 delete(_fm);
00071 }
00072 _fm = fm;
00073 }
00074
00078 struct FF3DGuidanceAgentCollider : public Collider
00079 {
00080 FF3DGuidanceAgent *_parent;
00081
00082 virtual void collide( CollisionState *cs)
00083 {
00084 Child::Collider::collide( cs );
00085 if (_parent->_fm)
00086 cs->addAbsoluteLocalFM( _parent->_fm );
00087 }
00088 };
00089
00090 protected:
00094 virtual void handlePointForceModel ( MicoleBus *app, int argc, const char **argv );
00098 virtual void handleLinearForceModel ( MicoleBus *app, int argc, const char **argv );
00102 virtual void handlePlanarForceModel ( MicoleBus *app, int argc, const char **argv );
00106 virtual void handleNoForceModel ( MicoleBus *app, int argc, const char **argv );
00110 virtual void handleSphericalForceModel ( MicoleBus *app, int argc, const char **argv );
00114 virtual void handleDiscForceModel ( MicoleBus *app, int argc, const char **argv );
00118 virtual void handlePicobHgForceModel ( MicoleBus *app, int argc, const char **argv );
00122 virtual void handlePicobGForceModel ( MicoleBus *app, int argc, const char **argv );
00123
00124 private:
00125 FF3DForceModel * _fm;
00126 Transform * _transform;
00127 };
00128
00129 #endif