#define _USE_MATH_DEFINES // To get M_PI defined
#include "orboxsineramp_box.h"
#include <math.h>
#define ORBOXSINERAMP__CLASS ORBOXSINERAMP__CLASSNAME
#define ORBOXSINERAMP__NAME ORBOXSINERAMP__CLASSSTR
#define ORBOXSINERAMP__LOCATION "Plugins"
#define ORBOXSINERAMP__LABEL "OR - Sine Ramp"
#define ORBOXSINERAMP__DESC "OR - Sine Ramp Description"
ORBOXSINERAMP__CLASS,
ORBOXSINERAMP__LOCATION,
ORBOXSINERAMP__LABEL,
ORBOXSINERAMP__DESC,
bool ORBoxSineRamp::FBCreate()
{
if( FBBox::FBCreate() )
{
return true;
}
return false;
}
void ORBoxSineRamp::FBDestroy()
{
FBBox::FBDestroy();
}
bool ORBoxSineRamp::AnimationNodeNotify( FBAnimationNode* pAnimationNode, FBEvaluateInfo* pEvaluateInfo )
{
double lA, lF, lP, lR;
double lTime, lPhase;
bool lStatus[4];
FBTime lEvaluationTime;
lStatus[0] = mAmplitude ->ReadData( &lA, pEvaluateInfo );
lStatus[1] = mFrequency ->ReadData( &lF, pEvaluateInfo );
lStatus[2] = mPhase ->ReadData( &lP, pEvaluateInfo );
if( lStatus[0] == false )
{
lA = 10.0;
}
if( lStatus[1] == false )
{
lF = 10.0;
}
if( lStatus[2] == false )
{
lP = 0.0;
}
if( pEvaluateInfo->IsStop() )
{
lEvaluationTime = pEvaluateInfo->GetSystemTime();
}
else
{
lEvaluationTime = pEvaluateInfo->GetLocalTime();
}
lPhase = lP * 2 * M_PI;
lTime = lEvaluationTime.GetSecondDouble();
lR = lA*sin( lF*lTime + lPhase );
mResult->WriteData( &lR, pEvaluateInfo );
return true;
}
bool ORBoxSineRamp::FbxStore( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
{
return true;
}
bool ORBoxSineRamp::FbxRetrieve( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat )
{
return true;
}