#ifndef __ORCONSTRAINT_DEFORMER_CONSTRAINT_H__
#define __ORCONSTRAINT_DEFORMER_CONSTRAINT_H__
#define ORCONSTRAINTDEFORMER__CLASSNAME ORConstraintDeformer
#define ORCONSTRAINTDEFORMER__CLASSSTR "ORConstraintDeformer"
enum FBAlterPoints {kFBAlterPointsEven, kFBAlterPointsOdd, kFBAlterPointsBoth };
class ORConstraintDeformer : public FBConstraint
{
public:
virtual bool FBCreate() override;
virtual void FBDestroy() override;
virtual void RemoveAllAnimationNodes() override;
virtual void SetupAllAnimationNodes() override;
virtual void FreezeSuggested() override;
virtual bool AnimationNodeNotify ( FBAnimationNode* pAnimationNode, FBEvaluateInfo* pEvaluateInfo, FBConstraintInfo* pConstraintInfo ) override;
virtual bool DeformerNotify( FBModel* pModel,
const FBVertex* pSrcVertex,
const FBVertex* pSrcNormal,
int pCount,
virtual bool ReferenceRemoveNotify( int pGroupIndex, FBModel* pModel ) override;
virtual bool ReferenceAddNotify( int pGroupIndex, FBModel* pModel ) override;
virtual bool FbxStore ( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
override;
virtual bool FbxRetrieve ( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
override;
void SetMultiplier( double pMultiplier ) { DispMultiplier = pMultiplier; }
double GetMultiplier() { return DispMultiplier; }
private:
FBAnimationNode* mSourceTranslation;
FBAnimationNode* mDeformTranslation;
FBAnimationNode* mGhostNode;
int mGroupSource;
int mGroupDeform;
FBPropertyBaseEnum<enum FBAlterPoints> AlterPoints;
bool mFirstTime;
FBSVector mScaling;
public:
FBAlterPoints mAlterPoints;
};
#endif