61 lines
1.8 KiB
C++
Executable File
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__
|