#ifndef __ORCONSTRAINT_CUSTOM_MARKER_SOLVER_H__
#define __ORCONSTRAINT_CUSTOM_MARKER_SOLVER_H__
#define ORCONSTRAINTCUSTOM__CLASS ORCharacterSolver_Custom
#define ORCONSTRAINTCUSTOM__CLASSNAME "ORCharacterSolver_Custom"
#define ORCONSTRAINTCUSTOM__CLASSSTR "Sample ORCharacterSolverHIK"
#define ORCONSTRAINTCUSTOM__NAME "Sample HIK to MotionBuilder"
#define ORCONSTRAINTCUSTOM__LABEL "OR - HIK to MotionBuilder"
#define ORCONSTRAINTCUSTOM__DESC "OR - HIK to MotionBuilder Constraint"
class ORCharacterSolver_Custom : public FBCharacterSolver
{
public:
virtual bool FBCreate() override;
virtual void FBDestroy() override;
virtual void RemoveAllAnimationNodes() override;
virtual void SetupAllAnimationNodes() override;
virtual bool AnimationNodeNotify ( FBAnimationNode* pAnimationNode, FBEvaluateInfo* pEvaluateInfo, FBConstraintInfo* pConstraintInfo ) override;
virtual bool FbxStore ( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
override;
virtual bool FbxRetrieve ( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
override;
private:
struct AnimationNodeMapping
{
FBModel* mModel;
FBAnimationNode* mT;
FBAnimationNode* mR;
FBAnimationNode* mS;
AnimationNodeMapping()
{
Clear();
}
~AnimationNodeMapping()
{
Clear();
}
void Clear()
{
}
bool Valid() {
return mModel !=
NULL; }
void Setup(FBModel* pModel, FBConstraint* pConstraint, int pIndex=0);
void Write(FBMatrix& pMatrix, FBEvaluateInfo* pEvaluateInfo,
bool pWriteT=
false,
bool pWriteR=
true,
bool pWriteS=
false);
};
int mEvaluateId;
void ClearNodes()
{
mEvaluateId = -1;
{
}
}
};
#endif