00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _CIvfController_h_
00023 #define _CIvfController_h_
00024
00025 #include <ivf/IvfBase.h>
00026 #include <ivf/IvfShape.h>
00027 #include <ivf/IvfLight.h>
00028
00029 #include <ivfctl/IvfAction.h>
00030
00031 #define IVF_ACTION_DEACTIVATE 0
00032 #define IVF_ACTION_ACTIVATE 1
00033 #define IVF_ACTION_RESET 2
00034
00035 IvfSmartPointer(CIvfController);
00036
00042 class IVFCTL_API CIvfController : public CIvfBase {
00043 private:
00044 CIvfShape* m_controlledShape;
00045
00046 bool m_active;
00047
00048 double m_initialPosition[3];
00049 double m_initialScale[3];
00050 double m_initialRotation[3];
00051 double m_initialRotQuat[4];
00052
00053 CIvfAction* m_endAction;
00054 CIvfAction* m_startAction;
00055
00056 CIvfLight* m_light;
00057 public:
00059 CIvfController();
00060
00062 virtual ~CIvfController();
00063
00064 IvfClassInfo("CIvfController",CIvfBase);
00065
00067 void activate();
00068
00070 void deactivate();
00071
00073 bool isActive();
00074
00076 void reset();
00077
00083 void update(double dt);
00084
00090 void action(CIvfAction* action);
00091
00093 void setShape(CIvfShape* shape);
00094
00096 CIvfShape* getShape();
00097
00099 void setLight(CIvfLight* light);
00100
00102 CIvfLight* getLight();
00103
00110 void setStartAction(CIvfAction* action);
00111
00118 void setEndAction(CIvfAction* action);
00119
00127 virtual void doUpdate(double dt);
00128 virtual void doReset();
00129 virtual void doAction(CIvfAction* action);
00130 virtual void doDeactivate();
00131 virtual void doActivate();
00132 virtual void doEndAction();
00133 virtual void doStartAction();
00134 };
00139 #endif