00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _CIvfPathController_h_
00023 #define _CIvfPathController_h_
00024
00025 #include <ivfctl/IvfController.h>
00026 #include <ivfmath/IvfSpline3d.h>
00027
00028 IvfSmartPointer(CIvfPathController);
00029
00037 class IVFCTL_API CIvfPathController : public CIvfController {
00038 public:
00039 enum TEndAction {
00040 EA_STOP,
00041 EA_REVERSE,
00042 EA_RESET,
00043 EA_DEACTIVATE
00044 };
00045 enum TStartAction {
00046 SA_STOP,
00047 SA_REVERSE,
00048 SA_RESET,
00049 SA_DEACTIVATE
00050 };
00051 private:
00052 CIvfSpline3dPtr m_path;
00053 double m_v0;
00054 double m_a0;
00055 double m_t0;
00056 double m_t;
00057 double m_v;
00058 TEndAction m_endAction;
00059 TStartAction m_startAction;
00060 public:
00062 CIvfPathController();
00063
00065 virtual ~CIvfPathController();
00066
00067 IvfClassInfo("CIvfPathController",CIvfController);
00068
00070 void setPath(CIvfSpline3d* spline);
00071
00073 CIvfSpline3d* getPath();
00074
00080 void setInitialPos(double t);
00081
00087 void setInitialSpeed(double v);
00088
00094 void setInitialAcceleration(double a);
00095
00103 void setStartActionType(TStartAction action);
00104
00112 void setEndActionType(TEndAction action);
00113
00114 virtual void doUpdate(double dt);
00115 virtual void doReset();
00116 };
00117
00118 #endif
00119