Merge of itasc branch. Project files, scons and cmake should be working. Makefile...
[blender.git] / intern / itasc / Object.hpp
1 /* $Id: Object.hpp 19907 2009-04-23 13:41:59Z ben2610 $
2  * Object.hpp
3  *
4  *  Created on: Jan 5, 2009
5  *      Author: rubensmits
6  */
7
8 #ifndef OBJECT_HPP_
9 #define OBJECT_HPP_
10
11 #include "Cache.hpp"
12 #include "kdl/frames.hpp"
13 #include <string>
14
15 namespace iTaSC{
16
17 class WorldObject;
18
19 class Object {
20 public:
21     enum ObjectType {Controlled, UnControlled};
22         static WorldObject world;
23
24 private:
25     ObjectType m_type;
26 protected:
27         Cache *m_cache;
28         KDL::Frame m_internalPose;
29         bool m_updated;
30     virtual void updateJacobian()=0;
31 public:
32     Object(ObjectType _type):m_type(_type), m_cache(NULL), m_internalPose(F_identity), m_updated(false) {};
33     virtual ~Object(){};
34
35         virtual int addEndEffector(const std::string& name){return 0;};
36         virtual void finalize(){};
37         virtual const KDL::Frame& getPose(const unsigned int end_effector=0){return m_internalPose;};
38     virtual const ObjectType getType(){return m_type;};
39     virtual const unsigned int getNrOfCoordinates(){return 0;};
40     virtual void updateKinematics(const Timestamp& timestamp)=0;
41     virtual void pushCache(const Timestamp& timestamp)=0;
42         virtual void initCache(Cache *_cache) = 0;
43         bool updated() {return m_updated;};
44         void updated(bool val) {m_updated=val;};
45 };
46
47 }
48 #endif /* OBJECT_HPP_ */