00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _CIvfActionController_h_
00023 #define _CIvfActionController_h_
00024
00025 #include <ivfctl/IvfControllerGroup.h>
00026 #include <ivfctl/IvfAction.h>
00027
00028 struct SActionCmp {
00029 bool operator() (CIvfAction* a1, CIvfAction* a2) const {
00030 return (a1->getTime()<a2->getTime());
00031 }
00032 };
00033
00034 typedef std::multiset<CIvfAction*, SActionCmp> CActions;
00035 typedef std::multiset<CIvfAction*, SActionCmp>::iterator CActionsIter;
00036
00037 IvfSmartPointer(CIvfActionController);
00038
00044 class IVFCTL_API CIvfActionController : public CIvfControllerGroup {
00045 private:
00046 std::multiset<CIvfAction*, SActionCmp> m_actionList;
00047 std::multiset<CIvfAction*, SActionCmp>::iterator m_actionIter;
00048 std::vector<double> m_test;
00049
00050 double m_time;
00051 double m_tolerance;
00052 public:
00054 CIvfActionController();
00055
00057 virtual ~CIvfActionController();
00058
00059 IvfClassInfo("CIvfActionController",CIvfControllerGroup);
00060
00066 void addAction(CIvfAction* action);
00067
00069 void clear();
00070
00072 void setTolerance(double tol);
00073
00074 virtual void doUpdate(double dt);
00075 virtual void doActivate();
00076 virtual void doReset();
00077 };
00082 #endif