Raw File
KinCharacter.h
#pragma once

#include "Character.h"
#include "Motion.h"

class cKinCharacter : public cCharacter
{
public:
	EIGEN_MAKE_ALIGNED_OPERATOR_NEW

	cKinCharacter();
	virtual ~cKinCharacter();

	virtual bool Init(const std::string& char_file, const std::string& motion_file);
	virtual bool Init(const std::string& char_file);
	virtual void Clear();
	virtual void Update(double time_step);
	virtual void Reset();

	virtual const cMotion& GetMotion() const;
	virtual double GetMotionDuration() const;
	virtual void SetTime(double time);
	virtual double GetTime() const;

	virtual void Pose(double time);
	virtual void BuildPose(Eigen::VectorXd& out_pose) const;
	virtual void BuildVel(Eigen::VectorXd& out_vel) const;
	virtual void BuildAcc(Eigen::VectorXd& out_acc) const;
	virtual void BuildPose0(Eigen::VectorXd& out_pose) const;
	virtual void SetPose(const Eigen::VectorXd& pose);
	virtual void SetPose0(const Eigen::VectorXd& pose);
	
	virtual bool HasMotion() const;

	virtual tVector GetRootPos() const;
	virtual const tVector& GetOrigin() const;
	virtual void SetOrigin(const tVector& origin);
	virtual void MoveOrigin(const tVector& delta);

	virtual void CalcPose(double time, Eigen::VectorXd& out_pose) const;

protected:
	double mTime;
	cMotion mMotion;

	tVector mCycleRootDelta;
	tVector mOrigin;

	virtual void ResetParams();
	virtual bool LoadMotion(const std::string& motion_file);
	virtual tVector CalcCycleRootDelta() const;
};
back to top