00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FF3DDEVICEOUTPUTAGENT_H
00024 #define FF3DDEVICEOUTPUTAGENT_H
00025 #include "micolelib.h"
00026
00027 #include <Child.h>
00028 #include "FF3DForceModel.h"
00029 #include "ReachinMicoleApplication.h"
00030 #include "MicoleAgent.h"
00031 #include "playback.h"
00032
00074 class MICOLELIB_API FF3DDeviceOutputAgent : public Child, public MicoleAgent
00075 {
00076 public:
00081 FF3DDeviceOutputAgent();
00082 virtual ~FF3DDeviceOutputAgent();
00083 Playback* pb;
00084 FILE* log;
00085
00092 void setForceModel(FF3DForceModel * fm)
00093 {
00094 if (_fm = fm)
00095 return;
00096 if (_fm)
00097 {
00098
00099 delete(_fm);
00100 }
00101 _fm = fm;
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 }
00113
00117 struct FF3DDeviceOutputAgentCollider : public Collider
00118 {
00119 FF3DDeviceOutputAgent *_parent;
00120
00121 virtual void collide( CollisionState *cs)
00122 {
00123 Child::Collider::collide( cs );
00124
00125
00126 if (_parent->_fm)
00127 cs->addAbsoluteLocalFM( _parent->_fm );
00128
00129 }
00130
00131 };
00132
00133 protected:
00137 virtual void handlePointForceModel ( MicoleBus *app, int argc, const char **argv );
00141 virtual void handleLinearForceModel ( MicoleBus *app, int argc, const char **argv );
00145 virtual void handlePlanarForceModel ( MicoleBus *app, int argc, const char **argv );
00149 virtual void handleNoForceModel ( MicoleBus *app, int argc, const char **argv );
00153 virtual void handleSphericalForceModel ( MicoleBus *app, int argc, const char **argv );
00157 virtual void handleDiscForceModel ( MicoleBus *app, int argc, const char **argv );
00161 virtual void handlePicobHgForceModel ( MicoleBus *app, int argc, const char **argv );
00165 virtual void handlePicobGForceModel ( MicoleBus *app, int argc, const char **argv );
00166
00167 private:
00168 FF3DForceModel * _fm;
00169 Transform * _transform;
00170 };
00172
00173 #endif