class Geksapod: public AJobManager {
friend class MotionJob;
friend CommandProcessorJob;
GeksaFoot m_LeftFrontFoot;
GeksaFoot m_LeftMidleFoot;
GeksaFoot m_LeftBackFoot;
GeksaFoot m_RigthFrontFoot;
GeksaFoot m_RigthMidleFoot;
GeksaFoot m_RigthBackFoot;
MotionJob m_MotionJob;
private:
int _setPose(int idx, int ca, int fa, int ta);
int _setPose(int[FOOTS_COUNT][3]);
int _setPose(Vector3D points[FOOTS_COUNT]);
protected:
int setPose(int idx, int ca, int fa, int ta, int actionTime);
int setPose(int pose[FOOTS_COUNT][3], int actionTime);
int setPose(int idx, Vector3D p, int actionTime);
int setPose(Vector3D points[FOOTS_COUNT], int actionTime = 0);
int setPose(int ca, int fa, int ta, int actionTime);
void getPose(int idx, int& ca, int& fa, int& ta);
void getPose(int pose[FOOTS_COUNT][3]);
void getPose(int idx, Vector3D& p);
void getPose(Vector3D points[FOOTS_COUNT]);
int execute(Motion* pMotion);
public:
Geksapod();
void setup();
int move(int speed, int time);
int rotate(int speed, int time);
void stop();
int getAngles(int idx, Vector3D p, int& ca, int& fa, int& ta);
int getPoint(int idx, int coxaAngle, int femoraAngle, int tibiaAngle, Vector3D& p);
int getAngles(Vector3D points[FOOTS_COUNT], int pose[FOOTS_COUNT][3]);
int getPoints(int pose[FOOTS_COUNT][3], Vector3D points[FOOTS_COUNT]);
};