tge/lib/maxsdk70/include/ikctrl.h
2017-04-17 06:17:10 -06:00

61 lines
1.8 KiB
C++
Executable File

/**********************************************************************
*<
FILE: ikctrl.h
DESCRIPTION: Inverse Kinematics Controllers
CREATED BY: Rolf Berteig
HISTORY: 3-1-97
*> Copyright (c) 1997, All Rights Reserved.
**********************************************************************/
#ifndef __IKCTRL_H__
#define __IKCTRL_H__
#define IKMASTER_CLASSID Class_ID(0xa91004be,0x9901fe83)
#define IKSLAVE_CLASSID Class_ID(0xbe380a31,0x310dc9e4)
class IKMasterControl : public ReferenceTarget {
public:
Class_ID ClassID() {return IKMASTER_CLASSID;}
SClass_ID SuperClassID() {return REF_TARGET_CLASS_ID;}
virtual void AddSlaveNode(INode *node)=0;
virtual void *GetMasterBase()=0;
virtual void SetPosThresh(float t)=0;
virtual void SetRotThresh(float t)=0;
virtual void SetIterations(int i)=0;
virtual void SetStartTime(TimeValue s)=0;
virtual void SetEndTime(TimeValue e)=0;
virtual float GetPosThresh()=0;
virtual float GetRotThresh()=0;
virtual int GetIterations()=0;
virtual TimeValue GetStartTime()=0;
virtual TimeValue GetEndTime()=0;
virtual void RemoveIKChainControllers(TimeValue t)=0;
};
class IKSlaveControl : public Control {
public:
Class_ID ClassID() {return IKSLAVE_CLASSID;}
SClass_ID SuperClassID() {return CTRL_MATRIX3_CLASS_ID;}
virtual IKMasterControl *GetMaster()=0;
virtual void SetDOF(int which,BOOL onOff)=0;
virtual void SetInitPos(Point3 pos)=0;
virtual void SetInitRot(Point3 rot)=0;
virtual void MakeEE(BOOL onOff,DWORD which,Point3 pos,Quat rot)=0;
};
CoreExport IKMasterControl *CreateIKMasterControl();
CoreExport IKSlaveControl *CreateIKSlaveControl(IKMasterControl *master,INode *slaveNode);
#endif //__IKCTRL_H__