#include "orcharactersolver_custom.h"
ORCONSTRAINTCUSTOM__CLASS,
ORCONSTRAINTCUSTOM__LABEL,
ORCONSTRAINTCUSTOM__DESC,
"default.tif" );
bool ORCharacterSolver_Custom::FBCreate()
{
ClearNodes();
return true;
}
void ORCharacterSolver_Custom::FBDestroy()
{
RemoveAllAnimationNodes();
}
void ORCharacterSolver_Custom::AnimationNodeMapping::Setup(FBModel* pModel, FBConstraint* pConstraint, int pIndex)
{
mModel = pModel;
if(mModel)
{
}
}
{
if(Valid())
{
FBSVector lS;
if(pWriteT && mT) mT->WriteData(lT.mValue,pEvaluateInfo);
if(pWriteR && mR) mR->WriteData(lR.mValue,pEvaluateInfo);
if(pWriteS && mS) mS->WriteData(lS.mValue,pEvaluateInfo);
}
}
void ORCharacterSolver_Custom::SetupAllAnimationNodes()
{
FBCharacter* lCharacter = TargetCharacter;
if(lCharacter !=
NULL && lCharacter->GetCharacterize() && AnimationNodeInGet())
{
{
FBCharacterMarkerSet* lMarkerSet = TargetCharacter->GetCharacterMarkerSet();
if( lMarkerSet )
{
{
{
mNodes[lBodyNodeId].Setup(lCharacter->GetModel((
FBBodyNodeId)lBodyNodeId),
this, lBodyNodeId);
}
}
}
}
}
}
void ORCharacterSolver_Custom::RemoveAllAnimationNodes()
{
ClearNodes();
}
bool ORCharacterSolver_Custom::AnimationNodeNotify(FBAnimationNode* pConnector,FBEvaluateInfo* pEvaluateInfo,FBConstraintInfo* pConstraintInfo)
{
if(mEvaluateId != pEvaluateInfo->GetEvaluationID())
{
mEvaluateId = pEvaluateInfo->GetEvaluationID();
{
FBCharacterMarkerSet* lMarkerSet = TargetCharacter->GetCharacterMarkerSet();
if(lMarkerSet)
{
FBControlSetState* lFKState = TargetCharacter->GetControlSetEvaluationCache(pEvaluateInfo);
FBEffectorSetState* lIKState = TargetCharacter->GetEffectorEvaluationCache(pEvaluateInfo);
lMarkerSet->ReadCtrlSetAndEffectorState(lFKState,lIKState,pEvaluateInfo);
FBMatrix lGX;
FBMatrix lCtr2Skeleton;
{
TargetCharacter->GetROffset((
FBBodyNodeId)lBodyNodeId, &lROffset);
mNodes[lBodyNodeId].Write(lGX, pEvaluateInfo, (lBodyNodeId ==
kFBHipsNodeId));
}
}
}
AnimationNodesOutDisableIfNotWritten(pEvaluateInfo);
}
return true;
}
bool ORCharacterSolver_Custom::FbxStore( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
{
return true;
}
bool ORCharacterSolver_Custom::FbxRetrieve( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
{
return true;
}