#ifndef __ORCONSTRAINT_EXTRACTION_H__
#define __ORCONSTRAINT_EXTRACTION_H__
#define ORCONSTRAINTEXTRACTION__CLASSNAME ORConstraintExtraction
#define ORCONSTRAINTEXTRACTION__CLASSSTR "ORConstraintExtraction"
class ORConstraintExtraction : public FBConstraint
{
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 );
virtual bool FbxRetrieve ( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat );
FBPropertyListObject Character;
private:
struct Node
{
FBAnimationNode* mReadT;
FBAnimationNode* mWriteT;
double mLength;
{
mStartNode = pNodeA;
mEndNode = pNodeB;
Clear();
}
~Node()
{
Clear();
}
void ReferenceAdd(FBCharacter* pCharacter, FBConstraint* pConstraint, int pGroup);
void Setup(FBCharacter* pCharacter, FBConstraint* pConstraint, int pIndex);
void Clear()
{
mLength = 1e10;
}
void Solve(FBCharacter* pCharacter, FBConstraint* pConstraint, FBEvaluateInfo* pEvaluateInfo);
};
FBArrayTemplate<Node*> mNodes;
int mReferenceGroup;
};
#endif