Merge of itasc branch. Project files, scons and cmake should be working. Makefile...
[blender.git] / intern / itasc / MovingFrame.hpp
1 /* $Id: MovingFrame.hpp 19907 2009-04-23 13:41:59Z ben2610 $
2  * MovingFrame.h
3  *
4  *  Created on: Feb 10, 2009
5  *      Author: benoitbolsee
6  */
7
8 #ifndef MOVINGFRAME_HPP_
9 #define MOVINGFRAME_HPP_
10
11 #include "UncontrolledObject.hpp"
12 #include <vector>
13
14
15 namespace iTaSC{
16
17 typedef bool (*MovingFrameCallback)(const Timestamp& timestamp, const Frame& _current, Frame& _next, void *param);
18
19 class MovingFrame: public UncontrolledObject {
20 public:
21     MovingFrame(const Frame& frame=F_identity);
22     virtual ~MovingFrame();
23
24         bool setFrame(const Frame& frame);
25         bool setCallback(MovingFrameCallback _function, void* _param);
26
27         virtual void updateCoordinates(const Timestamp& timestamp);
28         virtual void updateKinematics(const Timestamp& timestamp);
29     virtual void pushCache(const Timestamp& timestamp);
30         virtual void initCache(Cache *_cache);
31         virtual void finalize();
32 protected:
33         virtual void updateJacobian();
34
35 private:
36         void pushInternalFrame(CacheTS timestamp);
37         bool popInternalFrame(CacheTS timestamp);
38         MovingFrameCallback m_function;
39         void* m_param;
40         Frame m_nextPose;
41         Twist m_velocity;
42         int m_poseCCh;          // cache channel for pose
43         unsigned int m_poseCTs;
44 };
45
46 }
47
48 #endif /* MOVINGFRAME_H_ */