KFCurve Class Reference

#include <kfcurve.h>

List of all members.


Detailed Description

Function curve class.

A function curve is basically a collection of keys (see class KFCurveKey) sorted in time order. Since it is a function, only one key per time is allowed.

Definition at line 906 of file kfcurve.h.


Constructor and Destructor

  KFCurve ()
  Constructor.
virtual  ~KFCurve ()
  Destructor.
void  Destroy (int Local=0)
  Constructor.

Key Management

void  ResizeKeyBuffer (int pKeyCount, bool pResetKeyCount=false)
  Resize fcurve buffer to hold a certain number of key.
void  KeyModifyBegin ()
  Call this function prior to modifying the keys of a function curve.
void  KeyModifyEnd ()
  Call this function after modification of the keys of a function curve.
int  KeyGetCount () const
  Get the number of keys.
int  KeyGetSelectionCount () const
  Get the number of selected keys.
void  KeySelectAll ()
  Select all keys.
void  KeyUnselectAll ()
  Deselect all keys.
KFCurveKey  KeyGet (kFCurveIndex pIndex) const
  Get key at given index.
void  KeyClear ()
  Remove all the keys and free buffer memory.
void  KeyShrink ()
  Minimize use of buffer memory.
bool  KeySet (kFCurveIndex pIndex, KFCurveKey &pKey)
  Set key at given index.
bool  KeySet (kFCurveIndex pIndex, KFCurve *pSourceCurve, int pSourceIndex)
  Set key at given index.
int  KeyMove (kFCurveIndex pIndex, KTime pTime)
  Change time of key found at given index.
bool  KeyMoveOf (bool pSelectedOnly, KTime pDeltaTime, kFCurveDouble pDeltaValue)
  Add time and value offsets to keys, all or selected only.
bool  KeyMoveValueTo (bool pSelectedOnly, kFCurveDouble pValue)
  Set value of keys, all or selected only.
bool  KeyScaleValue (bool pSelectedOnly, kFCurveDouble pMultValue)
  Scale value of keys, all or selected only.
bool  KeyScaleTangeant (bool pSelectedOnly, kFCurveDouble pMultValue)
  Scale tangent of keys, all or selected only.
bool  KeyScaleValueAndTangeant (bool pSelectedOnly, kFCurveDouble pMultValue)
  Scale value and tangent of keys, all or selected only.
bool  KeyRemove (kFCurveIndex pIndex)
  Remove key at given index.
int  KeyInsert (KTime pTime, kFCurveIndex *pLast=NULL)
  Insert a key at given time.
int  KeyAdd (KTime pTime, KFCurveKey &pKey, kFCurveIndex *pLast=NULL)
  Add a key at given time.
int  KeyAdd (KTime pTime, KFCurve *pSourceCurve, int pSourceIndex, kFCurveIndex *pLast=NULL)
  Add a key at given time.
int  KeyAdd (KTime pTime, kFCurveIndex *pLast=NULL)
  Add a key at given time.
int  KeyAppend (KTime pAtTime, KFCurve *pSourceCurve, int pSourceIndex)
  Append a key at the end of the function curve.
int  KeyAppendFast (KTime pTime, kFCurveDouble pValue)
  Append a key at the end of the function curve.
double  KeyFind (KTime pTime, kFCurveIndex *pLast=NULL)
  Find key index for a given time.

Key Manipulation

KFBX_FCURVE_INLINE void  KeySet (kFCurveIndex pKeyIndex, KTime pTime, kFCurveDouble pValue, kFCurveInterpolation pInterpolation=KFCURVE_INTERPOLATION_CUBIC, kFCurveTangeantMode pTangentMode=KFCURVE_TANGEANT_AUTO, kFCurveDouble pRightSlope=0.0, kFCurveDouble pNextLeftSlope=0.0, kFCurveTangeantWeightMode pTangentWeightMode=KFCURVE_WEIGHTED_NONE, kFCurveDouble pWeight0=KFCURVE_DEFAULT_WEIGHT, kFCurveDouble pWeight1=KFCURVE_DEFAULT_WEIGHT, kFCurveDouble pVelocity0=KFCURVE_DEFAULT_VELOCITY, kFCurveDouble pVelocity1=KFCURVE_DEFAULT_VELOCITY)
  Set a key.
KFBX_FCURVE_INLINE void  KeySetTCB (kFCurveIndex pKeyIndex, KTime pTime, kFCurveDouble pValue, float pData0=0.0f, float pData1=0.0f, float pData2=0.0f)
  Set a key with cubic interpolation, TCB tangent mode.
KFBX_FCURVE_INLINE
kFCurveInterpolation 
KeyGetInterpolation (kFCurveIndex pKeyIndex) const
  Get key interpolation type.
KFBX_FCURVE_INLINE void  KeySetInterpolation (kFCurveIndex pKeyIndex, kFCurveInterpolation pInterpolation)
  Set key interpolation type.
KFBX_FCURVE_INLINE
kFCurveConstantMode 
KeyGetConstantMode (kFCurveIndex pKeyIndex) const
  Get key constant mode.
KFBX_FCURVE_INLINE
kFCurveTangeantMode 
KeyGetTangeantMode (kFCurveIndex pKeyIndex, bool pIncludeOverrides=false) const
  Get key tangent mode.
KFBX_FCURVE_INLINE
kFCurveTangeantWeightMode 
KeyGetTangeantWeightMode (kFCurveIndex pKeyIndex) const
  Get key tangent weight mode.
KFBX_FCURVE_INLINE
kFCurveTangeantVelocityMode 
KeyGetTangeantVelocityMode (kFCurveIndex pKeyIndex) const
  Get key tangent velocity mode.
KFBX_FCURVE_INLINE void  KeySetConstantMode (kFCurveIndex pKeyIndex, kFCurveConstantMode pMode)
  Set key constant mode.
KFBX_FCURVE_INLINE void  KeySetTangeantMode (kFCurveIndex pKeyIndex, kFCurveTangeantMode pTangent, bool pIgnoreAutoTimeIndepedentConversion=false)
  Set key tangent mode.
KFBX_FCURVE_INLINE void  KeySetTangeantWeightMode (kFCurveIndex pKeyIndex, kFCurveTangeantWeightMode pTangentWeightMode, kFCurveTangeantWeightMode pMask=KFCURVE_WEIGHTED_ALL)
  Set key tangent weight mode as double value (cubic interpolation, non TCB tangent mode).
KFBX_FCURVE_INLINE void  KeySetTangeantVelocityMode (kFCurveIndex pKeyIndex, kFCurveTangeantVelocityMode pTangentVelocityMode, kFCurveTangeantVelocityMode pMask=KFCURVE_VELOCITY_ALL)
  Set key tangent velocity mode as double value (cubic interpolation, non TCB tangent mode).
KFBX_FCURVE_INLINE kFCurveDouble  KeyGetDataDouble (kFCurveIndex pKeyIndex, EKFCurveDataIndex pIndex) const
  Get key data as double value (cubic interpolation, non TCB tangent mode).
KFBX_FCURVE_INLINE void  KeySetDataDouble (kFCurveIndex pKeyIndex, EKFCurveDataIndex pIndex, kFCurveDouble pValue)
  Set data as double value (cubic interpolation, non TCB tangent mode).
KFBX_FCURVE_INLINE float  KeyGetDataFloat (kFCurveIndex pKeyIndex, EKFCurveDataIndex pIndex) const
  Get key data as float value (cubic interpolation, TCB tangent mode).
KFBX_FCURVE_INLINE void  KeySetDataFloat (kFCurveIndex pKeyIndex, EKFCurveDataIndex pIndex, float pValue)
  Set data as float value (cubic interpolation, TCB tangent mode).
KFBX_FCURVE_INLINE const float *  KeyGetDataPtr (kFCurveIndex pKeyIndex) const
  Get key data as a pointer Warning: not supported in 'double' mode.
KFBX_FCURVE_INLINE kFCurveDouble  KeyGetValue (kFCurveIndex pKeyIndex) const
  Get key value.
KFBX_FCURVE_INLINE void  KeySetValue (kFCurveIndex pKeyIndex, kFCurveDouble pValue)
  Set key value.
KFBX_FCURVE_INLINE void  KeyIncValue (kFCurveIndex pKeyIndex, kFCurveDouble pValue)
  Increment key value.
KFBX_FCURVE_INLINE void  KeyMultValue (kFCurveIndex pKeyIndex, kFCurveDouble pValue)
  Multiply key value.
KFBX_FCURVE_INLINE void  KeyMultTangeant (kFCurveIndex pKeyIndex, kFCurveDouble pValue)
  Multiply key tangents.
KFBX_FCURVE_INLINE KTime  KeyGetTime (kFCurveIndex pKeyIndex) const
  Get key time.
KFBX_FCURVE_INLINE void  KeySetTime (kFCurveIndex pKeyIndex, KTime pTime)
  Set key time.
KFBX_FCURVE_INLINE void  KeyIncTime (kFCurveIndex pKeyIndex, KTime pTime)
  Increment key time.
KFBX_FCURVE_INLINE void  KeySetSelected (kFCurveIndex pKeyIndex, bool pSelected)
  Set if key is currently selected.
KFBX_FCURVE_INLINE bool  KeyGetSelected (kFCurveIndex pKeyIndex) const
  Return if key is currently selected.
KFBX_FCURVE_INLINE void  KeySetMarkedForManipulation (kFCurveIndex pKeyIndex, bool pMark)
  Set if key is currently marked for manipulation.
KFBX_FCURVE_INLINE bool  KeyGetMarkedForManipulation (kFCurveIndex pKeyIndex) const
  Return if key is currently marked for manipulation.
KFBX_FCURVE_INLINE void  KeySetTangeantVisibility (kFCurveIndex pKeyIndex, kFCurveTangeantVisibility pVisibility)
  Set tangent visibility mode.
KFBX_FCURVE_INLINE
kFCurveTangeantVisibility 
KeyGetTangeantVisibility (kFCurveIndex pKeyIndex) const
  Return tangent visibility mode.
KFBX_FCURVE_INLINE void  KeySetBreak (kFCurveIndex pKeyIndex, bool pVal)
  Set/Unset Break tangent Only valid for User and Auto keys.
KFBX_FCURVE_INLINE bool  KeyGetBreak (kFCurveIndex pKeyIndex) const
  Get if tangent is break Only valid for User and Auto keys.

Key Tangent Management

void  KeyTangeantSetInterpolation (bool pSelectedOnly, kFCurveInterpolation pInterpolation)
  Set interpolation type on keys, all or selected only.
void  KeyTangeantSetMode (bool pSelectedOnly, kFCurveTangeantMode pTangentMode)
  Set tangent mode on keys, all or selected only.
kFCurveDouble  KeyGetLeftDerivative (kFCurveIndex pIndex)
  Get the left derivative of a key.
void  KeySetLeftDerivative (kFCurveIndex pIndex, kFCurveDouble pValue)
  Set the left derivative of a key.
kFCurveDouble  KeyGetLeftAuto (kFCurveIndex pIndex, bool pApplyOvershootProtection=false)
  Get the left auto parametric of a key.
void  KeySetLeftAuto (kFCurveIndex pIndex, kFCurveDouble pValue)
  Set the left auto parametric of a key.
KFCurveTangeantInfo  KeyGetLeftDerivativeInfo (kFCurveIndex pIndex)
  Get the left derivative info of a key.
void  KeySetLeftDerivativeInfo (kFCurveIndex pIndex, KFCurveTangeantInfo pValue, bool pForceDerivative=false)
  Set the left derivative info of a key.
void  KeyIncLeftDerivative (kFCurveIndex pIndex, kFCurveDouble pInc)
  Increment the left derivative of a key.
kFCurveDouble  KeyGetRightDerivative (kFCurveIndex pIndex)
  Get the right derivative of a key.
void  KeySetRightDerivative (kFCurveIndex pIndex, kFCurveDouble pValue)
  Set the right derivative of a key.
kFCurveDouble  KeyGetRightAuto (kFCurveIndex pIndex, bool pApplyOvershootProtection=false)
  Get the right auto parametric of a key.
void  KeySetRightAuto (kFCurveIndex pIndex, kFCurveDouble pValue)
  Set the right auto parametric of a key.
KFCurveTangeantInfo  KeyGetRightDerivativeInfo (kFCurveIndex pIndex)
  Get the right derivative info of a key.
void  KeySetRightDerivativeInfo (kFCurveIndex pIndex, KFCurveTangeantInfo pValue, bool pForceDerivative=false)
  Set the right derivative info of a key.
void  KeyIncRightDerivative (kFCurveIndex pIndex, kFCurveDouble pInc)
  Increment the right derivative of a key.
kFCurveDouble  KeyGetRightBezierTangeant (kFCurveIndex pIndex)
  This function is disabled and always return 0.
void  KeySetLeftBezierTangeant (kFCurveIndex pIndex, kFCurveDouble pValue)
  Set the left derivative of a key as a Bezier tangent.
kFCurveDouble  KeyGetLeftBezierTangeant (kFCurveIndex pIndex)
  This function is disabled and always returns 0.
void  KeySetRightBezierTangeant (kFCurveIndex pIndex, kFCurveDouble pValue)
  Set the right derivative of a key as a Bezier tangent.
void  KeyMultDerivative (kFCurveIndex pIndex, kFCurveDouble pMultValue)
  Multiply the Derivative of a key.
bool  KeyIsLeftTangeantWeighted (kFCurveIndex pIndex) const
  Get the left tangent weight mode of a key.
bool  KeyIsRightTangeantWeighted (kFCurveIndex pIndex) const
  Get the right tangent weight mode of a key.
void  KeySetLeftTangeantWeightedMode (kFCurveIndex pIndex, bool pWeighted)
  Set the left tangent weight mode of a key.
void  KeySetRightTangeantWeightedMode (kFCurveIndex pIndex, bool pWeighted)
  Set the right tangent weight mode of a key.
kFCurveDouble  KeyGetLeftTangeantWeight (kFCurveIndex pIndex) const
  Get the weight value component of the left tangent of a key.
kFCurveDouble  KeyGetRightTangeantWeight (kFCurveIndex pIndex) const
  Get the weight value component of the right tangent of a key.
void  KeySetLeftTangeantWeight (kFCurveIndex pIndex, kFCurveDouble pWeight, bool pAdjustTan=false)
  Set the left tangent weight of a key.
void  KeySetRightTangeantWeight (kFCurveIndex pIndex, kFCurveDouble pWeight, bool pAdjustTan=false)
  Set the right tangent weight of a key.
bool  KeyIsLeftTangeantVelocity (kFCurveIndex pIndex) const
  Get the left tangent velocity mode of a key.
bool  KeyIsRightTangeantVelocity (kFCurveIndex pIndex) const
  Get the right tangent velocity mode of a key.
void  KeySetLeftTangeantVelocityMode (kFCurveIndex pIndex, bool pVelocity)
  Set the left tangent velocity mode of a key.
void  KeySetRightTangeantVelocityMode (kFCurveIndex pIndex, bool pVelocity)
  Set the right tangent velocity mode of a key.
kFCurveDouble  KeyGetLeftTangeantVelocity (kFCurveIndex pIndex) const
  Get the velocity value component of the left tangent of a key.
kFCurveDouble  KeyGetRightTangeantVelocity (kFCurveIndex pIndex) const
  Get the velocity value component of the right tangent of a key.
void  KeySetLeftTangeantVelocity (kFCurveIndex pIndex, kFCurveDouble pVelocity)
  Set the left tangent velocity of a key.
void  KeySetRightTangeantVelocity (kFCurveIndex pIndex, kFCurveDouble pVelocity)
  Set the right tangent velocity of a key.

Extrapolation

Extrapolation defines the function curve value before and after the keys.

Pre-extrapolation defines the function curve value before first key. Post-extrapolation defines the function curve value after last key.

  • KFCURVE_EXTRAPOLATION_CONST means a constant value matching the first/last key
  • KFCURVE_EXTRAPOLATION_REPETITION means the entire function curve is looped
  • KFCURVE_EXTRAPOLATION_MIRROR_REPETITION means the entire function curve is looped once backward, once forward and so on
  • KFCURVE_EXTRAPOLATION_KEEP_SLOPE means a linear function with a slope matching the first/last key


KFBX_FCURVE_INLINE void  SetPreExtrapolation (kFCurveExtrapolationMode pExtrapolation)
  Set pre-extrapolation mode.
KFBX_FCURVE_INLINE
kFCurveExtrapolationMode 
GetPreExtrapolation () const
  Get pre-extrapolation mode.
KFBX_FCURVE_INLINE void  SetPreExtrapolationCount (kULong pCount)
  Set pre-extrapolation count.
KFBX_FCURVE_INLINE kULong  GetPreExtrapolationCount () const
  Get pre-extrapolation count.
KFBX_FCURVE_INLINE void  SetPostExtrapolation (kFCurveExtrapolationMode pExtrapolation)
  Set post-extrapolation mode.
KFBX_FCURVE_INLINE
kFCurveExtrapolationMode 
GetPostExtrapolation () const
  Get post-extrapolation mode.
KFBX_FCURVE_INLINE void  SetPostExtrapolationCount (kULong pCount)
  Set post-extrapolation count.
KFBX_FCURVE_INLINE kULong  GetPostExtrapolationCount () const
  Get post-extrapolation count.
int  KeyGetCountAll () const
  Get total number of keys taking extrapolation into account.
double  KeyFindAll (KTime pTime, kFCurveIndex *pLast=NULL)
  Find key index for a given time taking extrapolation into account.

Evaluation and Analysis

kFCurveDouble  Evaluate (KTime pTime, kFCurveIndex *pLast=NULL)
  Evaluate function curve value at a given time.
kFCurveDouble  EvaluateIndex (double pIndex)
  Evaluate function curve value at a given key index.
kFCurveDouble  EvaluateLeftDerivative (KTime pTime, kFCurveIndex *pLast=NULL)
  Evaluate function left derivative at given time.
kFCurveDouble  EvaluateRightDerivative (KTime pTime, kFCurveIndex *pLast=NULL)
  Evaluate function right derivative at given time.
int  FindPeaks (kFCurveIndex pLeftKeyIndex, KTime &pPeakTime1, KTime &pPeakTime2)
  Find the peaks time between 2 keys (a local minimum and/or maximum).
int  FindPeaks (kFCurveIndex pLeftKeyIndex, kFCurveDouble &pPeak1, kFCurveDouble &pPeak2)
  Find the peaks value between 2 keys (a local minimum and/or maximum).
int  FindPeaks (kFCurveIndex pLeftKeyIndex, KTime &pPeakTime1, kFCurveDouble &pPeak1, KTime &pPeakTime2, kFCurveDouble &pPeak2)
  Find the peaks time and value between 2 keys (a local minimum and/or maximum).
void  KeyGetPeriods (KTime &pAveragePeriod, KTime &pMinPeriod, KTime &pMaxPeriod)
  Get key period statistics.

Copy, Insert, Replace and Delete Functions

HKFCurve  Copy (KTime pStart=KTIME_MINUS_INFINITE, KTime pStop=KTIME_INFINITE)
  Create a new function curve and copy keys.
void  CopyFrom (KFCurve &pSource, bool pWithKeys=true)
  Copy a function curve content into current function curve.
void  Replace (HKFCurve pSource, KTime pStart=KTIME_MINUS_INFINITE, KTime pStop=KTIME_INFINITE, bool pUseExactGivenSpan=false, bool pKeyStartEndOnNoKey=true, KTime pTimeSpanOffset=KTIME_ZERO)
  Replace keys within a range in current function curve with keys found in a source function curve.
void  ReplaceForQuaternion (HKFCurve pSource, KTime pStart, KTime pStop, kFCurveDouble pScaleStart, kFCurveDouble pScaleStop, bool pUseExactGivenSpan=false, bool pKeyStartEndOnNoKey=true, KTime pTimeSpanOffset=KTIME_ZERO)
  Replace keys within a range in current function curve with keys found in a source function curve.
void  ReplaceForEulerXYZ (HKFCurve pSource, KTime pStart, KTime pStop, kFCurveDouble pAddFromStart, kFCurveDouble pAddAfterStop, bool pValueSubOffsetAfterStart, bool pValueSubOffsetAfterStop, bool pUseExactGivenSpan=false, bool pKeyStartEndOnNoKey=true, KTime pTimeSpanOffset=KTIME_ZERO)
  Replace keys within a range in current function curve with keys found in a source function curve.
void  Insert (HKFCurve pSource, KTime pInsertTime, kFCurveDouble pFirstKeyLeftDerivative, bool pFirstKeyIsWeighted=false, kFCurveDouble pFirstKeyWeight=KFCURVE_DEFAULT_WEIGHT)
  Insert all keys found in a source function curve in current function curve.
void  Insert (HKFCurve pSource, KTime pInsertTime, KFCurveTangeantInfo pFirstKeyLeftDerivative)
  Insert all keys found in a source function curve in current function curve.
bool  Delete (kFCurveIndex pStartIndex, kFCurveIndex pStopIndex)
  Delete keys within an index range.
bool  Delete (KTime pStart=KTIME_MINUS_INFINITE, KTime pStop=KTIME_INFINITE, bool pInclusive=false)
  Delete keys within a time range.
bool  IsKeyInterpolationPureCubicAuto (kFCurveIndex pKeyIndex)
  Get if interpolation is cubic and that the tangents and weightings are untouched.
void  ExtractKeysIndex (KArrayTemplate< int > &pArray, int pMinIndex, int pMaxIndex, double pMinValue=-K_DOUBLE_MAX, double pMaxValue=K_DOUBLE_MAX)
  Extract All Keys in the Given Selection Span.

Public Member Functions

float *  GetColor ()
  Get function curve color.
void  SetColor (const float *pColor)
  Set function curve color.
void  SetValue (kFCurveDouble pValue)
  Set default value.
KFBX_FCURVE_INLINE kFCurveDouble  GetValue () const
  Get default value.

Constructor & Destructor Documentation

KFCurve (  ) 

Constructor.

virtual ~KFCurve (  )  [virtual]

Destructor.


Member Function Documentation

void Destroy ( int  Local = 0  ) 

Constructor.

float* GetColor (  ) 

Get function curve color.

Returns:
Pointer to an array of 3 elements: RGB values on a scale from 0 to 1.

void SetColor ( const float *  pColor  ) 

Set function curve color.

Parameters:
pColor  Pointer to an array of 3 elements: RGB values on a scale from 0 to 1.

void SetValue ( kFCurveDouble  pValue  ) 

Set default value.

Default value is used when there is no key in the function curve.

Parameters:
pValue  Default value.

KFBX_FCURVE_INLINE kFCurveDouble GetValue (  )  const

Get default value.

Default value is used when there is no key in the function curve.

Returns:
Default value.

Definition at line 3113 of file kfcurve.h.

void ResizeKeyBuffer ( int  pKeyCount,
bool  pResetKeyCount = false  
)

Resize fcurve buffer to hold a certain number of key.

Parameters:
pKeyCount  Number of key the function curve will eventually hold.
pResetKeyCount  If true, key count will be reset to 0

void KeyModifyBegin (  ) 

Call this function prior to modifying the keys of a function curve.

Call function KFCurve::KeyModifyEnd() after modification of the keys are completed.

void KeyModifyEnd (  ) 

Call this function after modification of the keys of a function curve.

Call function KFCurve::KeyModifyBegin() prior to modifying the keys.

int KeyGetCount (  )  const

int KeyGetSelectionCount (  )  const

Get the number of selected keys.

void KeySelectAll (  ) 

Select all keys.

void KeyUnselectAll (  ) 

Deselect all keys.

KFCurveKey KeyGet ( kFCurveIndex  pIndex  )  const

Get key at given index.

Parameters:
pIndex  The index.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeyClear (  ) 

Remove all the keys and free buffer memory.

void KeyShrink (  ) 

Minimize use of buffer memory.

bool KeySet ( kFCurveIndex  pIndex,
KFCurveKey pKey  
)

Set key at given index.

Remarks:
Result is undetermined if function curve has no key or index is out of bounds.
Parameters:
pIndex  Index of where the key should be set
pKey  the key to set
Returns:
true if key time is superior to previous key and inferior to next key.

bool KeySet ( kFCurveIndex  pIndex,
KFCurve pSourceCurve,
int  pSourceIndex  
)

Set key at given index.

Remarks:
Result is undetermined if function curve has no key or index is out of bounds.
Parameters:
pIndex  Index of where the key should be set
pSourceCurve  The source curve whose key at pSourceIndex is copied.
pSourceIndex  The source key index.
Returns:
true if key time is superior to previous key and inferior to next key.

int KeyMove ( kFCurveIndex  pIndex,
KTime  pTime  
)

Change time of key found at given index.

Parameters:
pIndex  Index of key to move.
pTime  Destination time.
Returns:
New index of moved key.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

bool KeyMoveOf ( bool  pSelectedOnly,
KTime  pDeltaTime,
kFCurveDouble  pDeltaValue  
)

Add time and value offsets to keys, all or selected only.

Parameters:
pSelectedOnly  If set to true, only selected keys are affected. Otherwise, all keys are affected.
pDeltaTime  Time offset added to keys.
pDeltaValue  Value offset added to keys.
Returns:
true on success.

bool KeyMoveValueTo ( bool  pSelectedOnly,
kFCurveDouble  pValue  
)

Set value of keys, all or selected only.

Parameters:
pSelectedOnly  If set to true, only selected keys are affected. Otherwise, all keys are affected.
pValue  Value set to keys.
Returns:
true on success.

bool KeyScaleValue ( bool  pSelectedOnly,
kFCurveDouble  pMultValue  
)

Scale value of keys, all or selected only.

Parameters:
pSelectedOnly  If set to true, only selected keys are affected. Otherwise, all keys are affected.
pMultValue  Scale applied on key values.
Returns:
true on success.

bool KeyScaleTangeant ( bool  pSelectedOnly,
kFCurveDouble  pMultValue  
)

Scale tangent of keys, all or selected only.

Parameters:
pSelectedOnly  If set to true, only selected keys are affected. Otherwise, all keys are affected.
pMultValue  Scale applied on key tangents.
Returns:
true on success.

bool KeyScaleValueAndTangeant ( bool  pSelectedOnly,
kFCurveDouble  pMultValue  
)

Scale value and tangent of keys, all or selected only.

Parameters:
pSelectedOnly  If set to true, only selected keys are affected. Otherwise, all keys are affected.
pMultValue  Scale applied on key values and tangents.
Returns:
true on success.

bool KeyRemove ( kFCurveIndex  pIndex  ) 

Remove key at given index.

Parameters:
pIndex  Index of key to remove.
Returns:
true on success.

int KeyInsert ( KTime  pTime,
kFCurveIndex pLast = NULL  
)

Insert a key at given time.

This function SHOULD be used instead of KFCurve::KeyAdd() if the key is to be added in the curve and not at the end. It inserts the key in respect to the interpolation type and tangents of the neighboring keys. If there is already a key a the given time, the key is modified and no new key is added.

Parameters:
pTime  Time to insert the key.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Index of the key at given time, no matter if it was inserted or already present.
Remarks:
Key value must be set explicitly afterwards. The interpolation type and tangent mode are copied from the previous key.

int KeyAdd ( KTime  pTime,
KFCurveKey pKey,
kFCurveIndex pLast = NULL  
)

Add a key at given time.

Function KFCurve::KeyInsert() SHOULD be used instead if the key is to be added in the curve and not at the end. This function does not respect the interpolation type and tangents of the neighboring keys. If there is already a key at the given time, the key is modified and no new key is added.

Parameters:
pTime  Time to add the key.
pKey  Key to add.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Index of the key at given time, no matter if it was added or already present.
Remarks:
Key value, interpolation type and tangent mode must be set explicitly afterwards.

int KeyAdd ( KTime  pTime,
KFCurve pSourceCurve,
int  pSourceIndex,
kFCurveIndex pLast = NULL  
)

Add a key at given time.

Function KFCurve::KeyInsert() SHOULD be used instead if the key is to be added in the curve and not at the end. This function does not respect the interpolation type and tangents of the neighboring keys. If there is already a key at the given time, the key is modified and no new key is added.

Parameters:
pTime  Time to add the key.
pSourceCurve  The source curve whose key at pSourceIndex is added.
pSourceIndex  The source key index.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Index of the key at given time, no matter if it was added or already present.
Remarks:
Key value, interpolation type and tangent mode must be set explicitly afterwards.

int KeyAdd ( KTime  pTime,
kFCurveIndex pLast = NULL  
)

Add a key at given time.

Function KFCurve::KeyInsert() SHOULD be used instead if the key is to be added in the curve and not at the end. This function does not respect of the interpolation type and tangents of the neighboring keys. If there is already a key a the given time, no key is added.

Parameters:
pTime  Time to add the key.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Index of the key at given time, no matter if it was added or already present.
Remarks:
Key value, interpolation type and tangent mode must be set explicitly afterwards.

int KeyAppend ( KTime  pAtTime,
KFCurve pSourceCurve,
int  pSourceIndex  
)

Append a key at the end of the function curve.

Parameters:
pAtTime  Time of appended key, must be superior to the last key time.
pSourceCurve  Source curve.
pSourceIndex  Index of the source key in the source curve.
Returns:
Index of appended key or -1 if pAtTime is inferior to the last key's time.

int KeyAppendFast ( KTime  pTime,
kFCurveDouble  pValue  
)

Append a key at the end of the function curve.

Parameters:
pTime  Time of appended key, must be superior to the last key time.
pValue  Value of appended key.
Returns:
Index of appended key or -1 if pTime is inferior to the last key's time.
Remarks:
Interpolation type of the appended key is set to KFCURVE_INTERPOLATION_CUBIC and tangent mode is set to KFCURVE_TANGEANT_AUTO.

double KeyFind ( KTime  pTime,
kFCurveIndex pLast = NULL  
)

Find key index for a given time.

Parameters:
pTime  Time of the key looked for.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Key index. The integer part of the key index gives the index of the closest key with a smaller time. The decimals give the relative position of given time compared to previous and next key times. Returns -1 if function curve has no key.

KFBX_FCURVE_INLINE void KeySet ( kFCurveIndex  pKeyIndex,
KTime  pTime,
kFCurveDouble  pValue,
kFCurveInterpolation  pInterpolation = KFCURVE_INTERPOLATION_CUBIC,
kFCurveTangeantMode  pTangentMode = KFCURVE_TANGEANT_AUTO,
kFCurveDouble  pRightSlope = 0.0,
kFCurveDouble  pNextLeftSlope = 0.0,
kFCurveTangeantWeightMode  pTangentWeightMode = KFCURVE_WEIGHTED_NONE,
kFCurveDouble  pWeight0 = KFCURVE_DEFAULT_WEIGHT,
kFCurveDouble  pWeight1 = KFCURVE_DEFAULT_WEIGHT,
kFCurveDouble  pVelocity0 = KFCURVE_DEFAULT_VELOCITY,
kFCurveDouble  pVelocity1 = KFCURVE_DEFAULT_VELOCITY  
)

Set a key.

Use SetTCB() to set a key with cubic interpolation and TCB tangent type.

Parameters:
pKeyIndex  Key index
pTime  Key time.
pValue  Key value.
pInterpolation  Key interpolation type. Interpolation types are: KFCURVE_INTERPOLATION_CONSTANT, KFCURVE_INTERPOLATION_LINEAR, KFCURVE_INTERPOLATION_CUBIC
pTangentMode  Key tangent mode (meaningful for cubic interpolation only). Tangent modes are: KFCURVE_TANGEANT_AUTO, KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK
pRightSlope  Right slope.
pNextLeftSlope  Next left slope.
pTangentWeightMode  Weight mode if used KFCURVE_WEIGHTED_NONE KFCURVE_WEIGHTED_RIGHT KFCURVE_WEIGHTED_NEXT_LEFT KFCURVE_WEIGHTED_ALL
pWeight0  Right slope weight.
pWeight1  Next left slope weight.
pVelocity0  Right velocity.
pVelocity1  Next left velocity.

Definition at line 3209 of file kfcurve.h.

References KPriFCurveKey::mAttr, KPriFCurveKeyAttr::mFlags, KPriFCurveKeyAttr::Set(), and KPriFCurveKey::Set().

KFBX_FCURVE_INLINE void KeySetTCB ( kFCurveIndex  pKeyIndex,
KTime  pTime,
kFCurveDouble  pValue,
float  pData0 = 0.0f,
float  pData1 = 0.0f,
float  pData2 = 0.0f  
)

Set a key with cubic interpolation, TCB tangent mode.

Parameters:
pKeyIndex  Key index
pTime  Key time.
pValue  Key value.
pData0  Tension.
pData1  Continuity.
pData2  Bias.

Definition at line 3236 of file kfcurve.h.

References KPriFCurveKeyAttr::SetTCB().

KFBX_FCURVE_INLINE kFCurveInterpolation KeyGetInterpolation ( kFCurveIndex  pKeyIndex  )  const

Get key interpolation type.

Interpolation types are: KFCURVE_INTERPOLATION_CONSTANT, KFCURVE_INTERPOLATION_LINEAR, KFCURVE_INTERPOLATION_CUBIC

Parameters:
pKeyIndex  Key index
Returns:
Key interpolation type

Definition at line 3252 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetInterpolation ( kFCurveIndex  pKeyIndex,
kFCurveInterpolation  pInterpolation  
)

Set key interpolation type.

Parameters:
pKeyIndex  Key index
pInterpolation  Key interpolation type. Interpolation types are: KFCURVE_INTERPOLATION_CONSTANT, KFCURVE_INTERPOLATION_LINEAR, KFCURVE_INTERPOLATION_CUBIC

Definition at line 3260 of file kfcurve.h.

References KPriFCurveKeyAttr::GetInterpolation(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetInterpolation().

KFBX_FCURVE_INLINE kFCurveConstantMode KeyGetConstantMode ( kFCurveIndex  pKeyIndex  )  const

Get key constant mode.

Warning: This method is meaningful for constant interpolation only. Using this method for non constant interpolated key will return unpredicted value. Constant modes are: KFCURVE_CONSTANT_STANDARD KFCURVE_CONSTANT_NEXT

Parameters:
pKeyIndex  Key index
Returns:
Key constant mode.

Definition at line 3278 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE kFCurveTangeantMode KeyGetTangeantMode ( kFCurveIndex  pKeyIndex,
bool  pIncludeOverrides = false  
) const

Get key tangent mode.

Parameters:
pKeyIndex 
pIncludeOverrides  Warning: This method is meaningful for cubic interpolation only. Using this method for non cubic interpolated key will return unpredicted value. Tangent modes are: KFCURVE_TANGEANT_AUTO, KFCURVE_TANGEANT_AUTO_BREAK KFCURVE_TANGEANT_TCB, KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK
Returns:
Key tangent mode.

Definition at line 3286 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE kFCurveTangeantWeightMode KeyGetTangeantWeightMode ( kFCurveIndex  pKeyIndex  )  const

Get key tangent weight mode.

Warning: This method is meaningful for cubic interpolation only. Tangent weight modes are: KFCURVE_WEIGHTED_NONE, KFCURVE_WEIGHTED_RIGHT, KFCURVE_WEIGHTED_NEXT_LEFT, KFCURVE_WEIGHTED_ALL

Parameters:
pKeyIndex  The key index.

Definition at line 3294 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE kFCurveTangeantVelocityMode KeyGetTangeantVelocityMode ( kFCurveIndex  pKeyIndex  )  const

Get key tangent velocity mode.

Warning: This method is meaningful for cubic interpolation only. Tangent weight modes are: KFCURVE_VELOCITY_NONE, KFCURVE_VELOCITY_RIGHT, KFCURVE_VELOCITY_NEXT_LEFT, KFCURVE_VELOCITY_ALL

Parameters:
pKeyIndex  The key index.

Definition at line 3302 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetConstantMode ( kFCurveIndex  pKeyIndex,
kFCurveConstantMode  pMode  
)

Set key constant mode.

Warning: This method is meaningful for constant interpolation only.

Parameters:
pKeyIndex  Key index
pMode  Key constant mode. Constant modes are: KFCURVE_CONSTANT_STANDARD KFCURVE_CONSTANT_NEXT

Definition at line 3310 of file kfcurve.h.

References KPriFCurveKeyAttr::GetConstantMode(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetConstantMode().

KFBX_FCURVE_INLINE void KeySetTangeantMode ( kFCurveIndex  pKeyIndex,
kFCurveTangeantMode  pTangent,
bool  pIgnoreAutoTimeIndepedentConversion = false  
)

Set key tangent mode.

Warning: This method is meaningful for cubic interpolation only.

Parameters:
pKeyIndex  Key index
pTangent  Key tangent mode. Tangent modes are: KFCURVE_TANGEANT_AUTO, KFCURVE_TANGEANT_AUTO_BREAK KFCURVE_TANGEANT_TCB, KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK
pIgnoreAutoTimeIndepedentConversion  true ignore the auto time independent conversion flag.

Definition at line 3328 of file kfcurve.h.

References KPriFCurveKeyAttr::GetRefCount(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, KPriFCurveKeyAttr::mFlags, NULL, and KPriFCurveKeyAttr::SetTangeantMode().

KFBX_FCURVE_INLINE void KeySetTangeantWeightMode ( kFCurveIndex  pKeyIndex,
kFCurveTangeantWeightMode  pTangentWeightMode,
kFCurveTangeantWeightMode  pMask = KFCURVE_WEIGHTED_ALL  
)

Set key tangent weight mode as double value (cubic interpolation, non TCB tangent mode).

Warning: This method is meaningful for cubic interpolation only.

Parameters:
pKeyIndex  Key index
pTangentWeightMode  Weight mode KFCURVE_WEIGHTED_NONE KFCURVE_WEIGHTED_RIGHT KFCURVE_WEIGHTED_NEXT_LEFT KFCURVE_WEIGHTED_ALL
pMask  Used to select the affected tangents KFCURVE_WEIGHTED_RIGHT KFCURVE_WEIGHTED_NEXT_LEFT KFCURVE_WEIGHTED_ALL

Definition at line 3358 of file kfcurve.h.

References KPriFCurveKeyAttr::GetRefCount(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, KPriFCurveKeyAttr::mFlags, NULL, and KPriFCurveKeyAttr::SetTangeantWeightMode().

KFBX_FCURVE_INLINE void KeySetTangeantVelocityMode ( kFCurveIndex  pKeyIndex,
kFCurveTangeantVelocityMode  pTangentVelocityMode,
kFCurveTangeantVelocityMode  pMask = KFCURVE_VELOCITY_ALL  
)

Set key tangent velocity mode as double value (cubic interpolation, non TCB tangent mode).

Warning: This method is meaningful for cubic interpolation only.

Parameters:
pKeyIndex  Key index
pTangentVelocityMode  Weight mode KFCURVE_VELOCITY_NONE KFCURVE_VELOCITY_RIGHT KFCURVE_VELOCITY_NEXT_LEFT KFCURVE_VELOCITY_ALL
pMask  Used to select the affected tangents KFCURVE_VELOCITY_RIGHT KFCURVE_VELOCITY_NEXT_LEFT KFCURVE_VELOCITY_ALL

Definition at line 3387 of file kfcurve.h.

References KPriFCurveKeyAttr::GetRefCount(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, KPriFCurveKeyAttr::mFlags, NULL, and KPriFCurveKeyAttr::SetTangeantVelocityMode().

KFBX_FCURVE_INLINE kFCurveDouble KeyGetDataDouble ( kFCurveIndex  pKeyIndex,
EKFCurveDataIndex  pIndex  
) const

Get key data as double value (cubic interpolation, non TCB tangent mode).

Warning: Using this method for other than cubic interpolated key (linear, constant) will return unpredicted values. Warning: Slope data is inconsistent for automatic tangent mode. Use KFCurve::EvaluateLeftDerivative() and KFCurve::EvaluateRightDerivative() to find slope values. Warning: Using this method for TCB tangent mode key will return unpredicted values. Use KFCurve::GetDataFloat() instead.

Parameters:
pKeyIndex  Key index
pIndex  Data index, either KFCURVEKEY_RIGHT_SLOPE, KFCURVEKEY_NEXT_LEFT_SLOPE. KFCURVEKEY_NEXT_RIGHT_WEIGHT. KFCURVEKEY_NEXT_LEFT_WEIGHT

Definition at line 3416 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetDataDouble ( kFCurveIndex  pKeyIndex,
EKFCurveDataIndex  pIndex,
kFCurveDouble  pValue  
)

Set data as double value (cubic interpolation, non TCB tangent mode).

Warning: Using this method for other than cubic interpolated key (linear, constant) is irrelevant. Warning: Slope data is inconsistent for automatic tangent mode. Therefore, it is irrelevant to use this method on automatic tangent mode keys. Warning: Using this method for a TCB tangent mode key will result in unpredicted curve behavior for this key. Use KFCurve::SetDataFloat() instead.

Parameters:
pKeyIndex  Key index
pIndex  Data index, either KFCURVEKEY_RIGHT_SLOPE, KFCURVEKEY_NEXT_LEFT_SLOPE. KFCURVEKEY_NEXT_RIGHT_WEIGHT. KFCURVEKEY_NEXT_LEFT_WEIGHT
pValue  The data value to set (a slope or a weight).

Definition at line 3424 of file kfcurve.h.

References KPriFCurveKeyAttr::GetDataDouble(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetDataDouble().

KFBX_FCURVE_INLINE float KeyGetDataFloat ( kFCurveIndex  pKeyIndex,
EKFCurveDataIndex  pIndex  
) const

Get key data as float value (cubic interpolation, TCB tangent mode).

Warning: Using this method for any key but a cubic interpolated, in TCB tangent mode, will return unpredicted values.

Parameters:
pKeyIndex  Key index
pIndex  Data index, either KFCURVEKEY_TCB_TENSION, KFCURVEKEY_TCB_CONTINUITY or KFCURVEKEY_TCB_BIAS.

Definition at line 3442 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetDataFloat ( kFCurveIndex  pKeyIndex,
EKFCurveDataIndex  pIndex,
float  pValue  
)

Set data as float value (cubic interpolation, TCB tangent mode).

Warning: Using this method for any key but a cubic interpolated, in TCB tangent mode, will return unpredicted values.

Parameters:
pKeyIndex  Key index
pIndex  Data index, either KFCURVEKEY_TCB_TENSION, KFCURVEKEY_TCB_CONTINUITY or KFCURVEKEY_TCB_BIAS.
pValue  The data value to set.

Definition at line 3450 of file kfcurve.h.

References KPriFCurveKeyAttr::GetDataFloat(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetDataFloat().

KFBX_FCURVE_INLINE const float * KeyGetDataPtr ( kFCurveIndex  pKeyIndex  )  const

Get key data as a pointer Warning: not supported in 'double' mode.

Parameters:
pKeyIndex  Key index.

Definition at line 3468 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE kFCurveDouble KeyGetValue ( kFCurveIndex  pKeyIndex  )  const

Get key value.

Parameters:
pKeyIndex  Key index.

Definition at line 3476 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetValue ( kFCurveIndex  pKeyIndex,
kFCurveDouble  pValue  
)

Set key value.

Parameters:
pKeyIndex  Key index.
pValue  The value to set.

Definition at line 3484 of file kfcurve.h.

References KFCURVEEVENT_EDITVALUE, and KFCURVEEVENT_KEY.

KFBX_FCURVE_INLINE void KeyIncValue ( kFCurveIndex  pKeyIndex,
kFCurveDouble  pValue  
)

Increment key value.

Parameters:
pKeyIndex  Key index
pValue  Value by which key value is incremented.

Definition at line 3490 of file kfcurve.h.

References K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITVALUE, and KFCURVEEVENT_KEY.

KFBX_FCURVE_INLINE void KeyMultValue ( kFCurveIndex  pKeyIndex,
kFCurveDouble  pValue  
)

Multiply key value.

Parameters:
pKeyIndex  Key index
pValue  Value by which the key value is multiplied.

Definition at line 3499 of file kfcurve.h.

References K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITVALUE, and KFCURVEEVENT_KEY.

KFBX_FCURVE_INLINE void KeyMultTangeant ( kFCurveIndex  pKeyIndex,
kFCurveDouble  pValue  
)

Multiply key tangents.

Note: When multiplying a key value, tangents must be multiplied to conserve the same topology.

Parameters:
pKeyIndex  Key index
pValue  Value by which key tangents are multiplied.

Definition at line 3508 of file kfcurve.h.

References KPriFCurveKeyAttr::GetDataDouble(), KPriFCurveKeyAttr::GetInterpolation(), KPriFCurveKeyAttr::GetTangeantMode(), K_ASSERT, KeyGetCount(), KFCURVE_INTERPOLATION_CUBIC, KFCURVE_TANGEANT_AUTO, KFCURVE_TANGEANT_AUTO_BREAK, KFCURVE_TANGEANT_BREAK, KFCURVE_TANGEANT_TCB, KFCURVE_TANGEANT_USER, KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KFCURVEKEY_NEXT_LEFT_SLOPE, KFCURVEKEY_RIGHT_SLOPE, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetDataDouble().

KFBX_FCURVE_INLINE KTime KeyGetTime ( kFCurveIndex  pKeyIndex  )  const

Get key time.

Parameters:
pKeyIndex  Key index
Returns:
Key time (time at which this key is occurring).

Definition at line 3567 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetTime ( kFCurveIndex  pKeyIndex,
KTime  pTime  
)

Set key time.

Parameters:
pKeyIndex  Key index
pTime  Key time (time at which this key is occurring).

Definition at line 3575 of file kfcurve.h.

References K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITTIME, and KFCURVEEVENT_KEY.

KFBX_FCURVE_INLINE void KeyIncTime ( kFCurveIndex  pKeyIndex,
KTime  pTime  
)

Increment key time.

Parameters:
pKeyIndex  Key index
pTime  Time value by which the key time is incremented.

Definition at line 3584 of file kfcurve.h.

References K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITTIME, and KFCURVEEVENT_KEY.

KFBX_FCURVE_INLINE void KeySetSelected ( kFCurveIndex  pKeyIndex,
bool  pSelected  
)

Set if key is currently selected.

Parameters:
pKeyIndex  Key index
pSelected  Selection flag.

Definition at line 3593 of file kfcurve.h.

References KPriFCurveKeyAttr::GetSelected(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_SELECTION, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetSelected().

KFBX_FCURVE_INLINE bool KeyGetSelected ( kFCurveIndex  pKeyIndex  )  const

Return if key is currently selected.

Parameters:
pKeyIndex  Key index
Returns:
Selection flag.

Definition at line 3611 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetMarkedForManipulation ( kFCurveIndex  pKeyIndex,
bool  pMark  
)

Set if key is currently marked for manipulation.

Parameters:
pKeyIndex  Key index
pMark  Mark flag.

Definition at line 3619 of file kfcurve.h.

References KPriFCurveKeyAttr::GetMarkedForManipulation(), K_ASSERT, KeyGetCount(), KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetMarkedForManipulation().

KFBX_FCURVE_INLINE bool KeyGetMarkedForManipulation ( kFCurveIndex  pKeyIndex  )  const

Return if key is currently marked for manipulation.

Parameters:
pKeyIndex  Key index
Returns:
Mark flag.

Definition at line 3636 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetTangeantVisibility ( kFCurveIndex  pKeyIndex,
kFCurveTangeantVisibility  pVisibility  
)

Set tangent visibility mode.

Warning: This method is meaningful for cubic interpolation only.

Parameters:
pKeyIndex  Key index
pVisibility  Tangent visibility mode. Tangent visibility modes are: KFCURVE_TANGEANT_SHOW_NONE KFCURVE_TANGEANT_SHOW_LEFT KFCURVE_TANGEANT_SHOW_RIGHT

Definition at line 3644 of file kfcurve.h.

References KPriFCurveKeyAttr::GetTangeantVisibility(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_SELECTION, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetTangeantVisibility().

KFBX_FCURVE_INLINE kFCurveTangeantVisibility KeyGetTangeantVisibility ( kFCurveIndex  pKeyIndex  )  const

Return tangent visibility mode.

Warning: This method is meaningful for cubic interpolation only.

Parameters:
pKeyIndex  Key index
Returns:
Tangent visibility mode. Tangent visibility modes are: KFCURVE_TANGEANT_SHOW_NONE KFCURVE_TANGEANT_SHOW_LEFT KFCURVE_TANGEANT_SHOW_RIGHT

Definition at line 3662 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

KFBX_FCURVE_INLINE void KeySetBreak ( kFCurveIndex  pKeyIndex,
bool  pVal  
)

Set/Unset Break tangent Only valid for User and Auto keys.

Parameters:
pKeyIndex  Key index.
pVal  Break flag.

Definition at line 3670 of file kfcurve.h.

References KPriFCurveKeyAttr::GetBreak(), K_ASSERT, KeyGetCount(), KFCURVEEVENT_EDITOTHER, KFCURVEEVENT_KEY, KPriFCurveKey::mAttr, NULL, and KPriFCurveKeyAttr::SetBreak().

KFBX_FCURVE_INLINE bool KeyGetBreak ( kFCurveIndex  pKeyIndex  )  const

Get if tangent is break Only valid for User and Auto keys.

Parameters:
pKeyIndex  Key index.

Definition at line 3688 of file kfcurve.h.

References K_ASSERT, and KeyGetCount().

void KeyTangeantSetInterpolation ( bool  pSelectedOnly,
kFCurveInterpolation  pInterpolation  
)

Set interpolation type on keys, all or selected only.

Parameters:
pSelectedOnly  If set to true, only selected keys are affected. Otherwise, all keys are affected.
pInterpolation  Interpolation type.

void KeyTangeantSetMode ( bool  pSelectedOnly,
kFCurveTangeantMode  pTangentMode  
)

Set tangent mode on keys, all or selected only.

Parameters:
pSelectedOnly  If set to true, only selected keys are affected. Otherwise, all keys are affected.
pTangentMode  Tangent mode.
Remarks:
Tangent mode is only relevant on keys with a cubic interpolation type.

kFCurveDouble KeyGetLeftDerivative ( kFCurveIndex  pIndex  ) 

Get the left derivative of a key.

Parameters:
pIndex  Index of key.
Returns:
Left derivative.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetLeftDerivative ( kFCurveIndex  pIndex,
kFCurveDouble  pValue  
)

Set the left derivative of a key.

Parameters:
pIndex  Index of key.
pValue  Left derivative.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK or KFCURVE_TANGEANT_AUTO.

kFCurveDouble KeyGetLeftAuto ( kFCurveIndex  pIndex,
bool  pApplyOvershootProtection = false  
)

Get the left auto parametric of a key.

Parameters:
pIndex  Index of key.
pApplyOvershootProtection  Clamp is taking into account.
Returns:
left auto parametric.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetLeftAuto ( kFCurveIndex  pIndex,
kFCurveDouble  pValue  
)

Set the left auto parametric of a key.

Parameters:
pIndex  Index of key.
pValue  Left auto parametric .
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK or KFCURVE_TANGEANT_AUTO.

KFCurveTangeantInfo KeyGetLeftDerivativeInfo ( kFCurveIndex  pIndex  ) 

Get the left derivative info of a key.

Parameters:
pIndex  Index of key.
Returns:
Left derivative.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetLeftDerivativeInfo ( kFCurveIndex  pIndex,
KFCurveTangeantInfo  pValue,
bool  pForceDerivative = false  
)

Set the left derivative info of a key.

Parameters:
pIndex  Index of key.
pValue  Left derivative.
pForceDerivative 
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

void KeyIncLeftDerivative ( kFCurveIndex  pIndex,
kFCurveDouble  pInc  
)

Increment the left derivative of a key.

Parameters:
pIndex  Index of key.
pInc  Increment to left derivative.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

kFCurveDouble KeyGetRightDerivative ( kFCurveIndex  pIndex  ) 

Get the right derivative of a key.

Parameters:
pIndex  Index of key.
Returns:
Right derivative.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetRightDerivative ( kFCurveIndex  pIndex,
kFCurveDouble  pValue  
)

Set the right derivative of a key.

Parameters:
pIndex  Index of key.
pValue  Right derivative.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK or KFCURVE_TANGEANT_AUTO.

kFCurveDouble KeyGetRightAuto ( kFCurveIndex  pIndex,
bool  pApplyOvershootProtection = false  
)

Get the right auto parametric of a key.

Parameters:
pIndex  Index of key.
pApplyOvershootProtection  Clamp is taking into account.
Returns:
Right auto parametric.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetRightAuto ( kFCurveIndex  pIndex,
kFCurveDouble  pValue  
)

Set the right auto parametric of a key.

Parameters:
pIndex  Index of key.
pValue  Right auto parametric .
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK or KFCURVE_TANGEANT_AUTO.

KFCurveTangeantInfo KeyGetRightDerivativeInfo ( kFCurveIndex  pIndex  ) 

Get the right derivative info of a key.

Parameters:
pIndex  Index of key.
Returns:
Right derivative info.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetRightDerivativeInfo ( kFCurveIndex  pIndex,
KFCurveTangeantInfo  pValue,
bool  pForceDerivative = false  
)

Set the right derivative info of a key.

Parameters:
pIndex  Index of key.
pValue  Right derivative.
pForceDerivative 
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

void KeyIncRightDerivative ( kFCurveIndex  pIndex,
kFCurveDouble  pInc  
)

Increment the right derivative of a key.

Parameters:
pIndex  Index of key.
pInc  Increment to right derivative.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

kFCurveDouble KeyGetRightBezierTangeant ( kFCurveIndex  pIndex  ) 

This function is disabled and always return 0.

Parameters:
pIndex  Key index.

void KeySetLeftBezierTangeant ( kFCurveIndex  pIndex,
kFCurveDouble  pValue  
)

Set the left derivative of a key as a Bezier tangent.

Parameters:
pIndex  Index of key.
pValue  Left derivative as a Bezier tangent.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

kFCurveDouble KeyGetLeftBezierTangeant ( kFCurveIndex  pIndex  ) 

This function is disabled and always returns 0.

Parameters:
pIndex  Key index.

void KeySetRightBezierTangeant ( kFCurveIndex  pIndex,
kFCurveDouble  pValue  
)

Set the right derivative of a key as a Bezier tangent.

Parameters:
pIndex  Index of key.
pValue  Right derivative as a Bezier tangent.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

void KeyMultDerivative ( kFCurveIndex  pIndex,
kFCurveDouble  pMultValue  
)

Multiply the Derivative of a key.

Parameters:
pIndex  Index of key.
pMultValue  Value that multiply Derivative
Remarks:
Result is undetermined if function curve has no key or index is out of bounds. This function is only relevant if key interpolation is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

bool KeyIsLeftTangeantWeighted ( kFCurveIndex  pIndex  )  const

Get the left tangent weight mode of a key.

Parameters:
pIndex  Index of key.
Returns:
true if the key is weighted
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

bool KeyIsRightTangeantWeighted ( kFCurveIndex  pIndex  )  const

Get the right tangent weight mode of a key.

Parameters:
pIndex  Index of key.
Returns:
true if the key is weighted
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetLeftTangeantWeightedMode ( kFCurveIndex  pIndex,
bool  pWeighted  
)

Set the left tangent weight mode of a key.

Parameters:
pIndex  Index of key.
pWeighted  Weighted state of the tangent This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

void KeySetRightTangeantWeightedMode ( kFCurveIndex  pIndex,
bool  pWeighted  
)

Set the right tangent weight mode of a key.

Parameters:
pIndex  Index of key.
pWeighted  Weighted state of the tangent This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

kFCurveDouble KeyGetLeftTangeantWeight ( kFCurveIndex  pIndex  )  const

Get the weight value component of the left tangent of a key.

Parameters:
pIndex  Index of key.
Returns:
right tangent weight This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC

kFCurveDouble KeyGetRightTangeantWeight ( kFCurveIndex  pIndex  )  const

Get the weight value component of the right tangent of a key.

Parameters:
pIndex  Index of key.
Returns:
right tangent weight This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC

void KeySetLeftTangeantWeight ( kFCurveIndex  pIndex,
kFCurveDouble  pWeight,
bool  pAdjustTan = false  
)

Set the left tangent weight of a key.

Parameters:
pIndex  Index of key.
pWeight  Weight
pAdjustTan  If true, recompute the tangent height to compensate for very small weights This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK. The tangent is automatically set in weighted mode.
The pAdjustTan option will only produce correct results provided that the tangent has already been set before calling this function.

void KeySetRightTangeantWeight ( kFCurveIndex  pIndex,
kFCurveDouble  pWeight,
bool  pAdjustTan = false  
)

Set the right tangent weight of a key.

Parameters:
pIndex  Index of key.
pWeight  Weight
pAdjustTan  If true, recompute the tangent height to compensate for very small weights This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK. The tangent is automatically set in weighted mode.
The pAdjustTan option will only produce correct results provided that the tangent has already been set before calling this function.

bool KeyIsLeftTangeantVelocity ( kFCurveIndex  pIndex  )  const

Get the left tangent velocity mode of a key.

Parameters:
pIndex  Index of key.
Returns:
true if the key has velocity
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

bool KeyIsRightTangeantVelocity ( kFCurveIndex  pIndex  )  const

Get the right tangent velocity mode of a key.

Parameters:
pIndex  Index of key.
Returns:
true if the key has velocity
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeySetLeftTangeantVelocityMode ( kFCurveIndex  pIndex,
bool  pVelocity  
)

Set the left tangent velocity mode of a key.

Parameters:
pIndex  Index of key.
pVelocity  Velocity state of the tangent This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

void KeySetRightTangeantVelocityMode ( kFCurveIndex  pIndex,
bool  pVelocity  
)

Set the right tangent velocity mode of a key.

Parameters:
pIndex  Index of key.
pVelocity  Velocity state of the tangent This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK.

kFCurveDouble KeyGetLeftTangeantVelocity ( kFCurveIndex  pIndex  )  const

Get the velocity value component of the left tangent of a key.

Parameters:
pIndex  Index of key.
Returns:
right tangent velocity This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC

kFCurveDouble KeyGetRightTangeantVelocity ( kFCurveIndex  pIndex  )  const

Get the velocity value component of the right tangent of a key.

Parameters:
pIndex  Index of key.
Returns:
right tangent velocity This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC

void KeySetLeftTangeantVelocity ( kFCurveIndex  pIndex,
kFCurveDouble  pVelocity  
)

Set the left tangent velocity of a key.

Parameters:
pIndex  Index of key.
pVelocity  Velocity This function is only relevant if previous key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK. The tangent is automatically set in velocity mode.

void KeySetRightTangeantVelocity ( kFCurveIndex  pIndex,
kFCurveDouble  pVelocity  
)

Set the right tangent velocity of a key.

Parameters:
pIndex  Index of key.
pVelocity  Velocity This function is only relevant if key interpolation type is KFCURVE_INTERPOLATION_CUBIC and tangent mode is KFCURVE_TANGEANT_USER or KFCURVE_TANGEANT_BREAK. The tangent is automatically set in velocity mode.

KFBX_FCURVE_INLINE void SetPreExtrapolation ( kFCurveExtrapolationMode  pExtrapolation  ) 

Set pre-extrapolation mode.

Parameters:
pExtrapolation  The pre-extrapolation mode to set.

KFBX_FCURVE_INLINE kUInt GetPreExtrapolation (  )  const

Get pre-extrapolation mode.

Definition at line 3131 of file kfcurve.h.

KFBX_FCURVE_INLINE void SetPreExtrapolationCount ( kULong  pCount  ) 

Set pre-extrapolation count.

Parameters:
pCount  Number of repetitions if pre-extrapolation mode is KFCURVE_EXTRAPOLATION_REPETITION or KFCURVE_EXTRAPOLATION_MIRROR_REPETITION.

Definition at line 3137 of file kfcurve.h.

References KFCURVEEVENT_EDITOTHER, and KFCURVEEVENT_KEY.

KFBX_FCURVE_INLINE kULong GetPreExtrapolationCount (  )  const

Get pre-extrapolation count.

Returns:
Number of repetitions if pre-extrapolation mode is KFCURVE_EXTRAPOLATION_REPETITION or KFCURVE_EXTRAPOLATION_MIRROR_REPETITION.

Definition at line 3144 of file kfcurve.h.

KFBX_FCURVE_INLINE void SetPostExtrapolation ( kFCurveExtrapolationMode  pExtrapolation  ) 

Set post-extrapolation mode.

Parameters:
pExtrapolation  The post-extrapolation mode to set.

KFBX_FCURVE_INLINE kUInt GetPostExtrapolation (  )  const

Get post-extrapolation mode.

Definition at line 3164 of file kfcurve.h.

KFBX_FCURVE_INLINE void SetPostExtrapolationCount ( kULong  pCount  ) 

Set post-extrapolation count.

Parameters:
pCount  Number of repetitions if post-extrapolation mode is KFCURVE_EXTRAPOLATION_REPETITION or KFCURVE_EXTRAPOLATION_MIRROR_REPETITION.

Definition at line 3170 of file kfcurve.h.

References KFCURVEEVENT_EDITOTHER, and KFCURVEEVENT_KEY.

KFBX_FCURVE_INLINE kULong GetPostExtrapolationCount (  )  const

Get post-extrapolation count.

Returns:
Number of repetitions if post-extrapolation mode is KFCURVE_EXTRAPOLATION_REPETITION or KFCURVE_EXTRAPOLATION_MIRROR_REPETITION.

Definition at line 3177 of file kfcurve.h.

int KeyGetCountAll (  )  const

Get total number of keys taking extrapolation into account.

The total number of keys includes repetitions of the function curve if pre-extrapolation and/or post-extrapolation are of mode KFCURVE_EXTRAPOLATION_REPETITION or KFCURVE_EXTRAPOLATION_MIRROR_REPETITION.

Returns:
Total number of keys taking extrapolation into account.

double KeyFindAll ( KTime  pTime,
kFCurveIndex pLast = NULL  
)

Find key index for a given time taking extrapolation into account.

Parameters:
pTime  Time of the key looked for.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Key index between 0 and KFCurve::KeyGetCount() - 1.The integer part of the key index gives the index of the closest key with a smaller time. The decimals give the relative position of given time compared to previous and next key times. Return -1 if function curve has no key.

kFCurveDouble Evaluate ( KTime  pTime,
kFCurveIndex pLast = NULL  
)

Evaluate function curve value at a given time.

Parameters:
pTime  Time of evaluation. If time falls between two keys, function curve value is interpolated according to previous key interpolation type and tangent mode if relevant.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Function curve value or default value if function curve has no key.
Remarks:
This function takes extrapolation into account.

kFCurveDouble EvaluateIndex ( double  pIndex  ) 

Evaluate function curve value at a given key index.

Parameters:
pIndex  Any value between 0 and KFCurve::KeyGetCount() - 1. If key index is not an integer value, function curve value is interpolated according to previous key interpolation type and tangent mode if relevant.
Returns:
Function curve value or default value if function curve has no key.
Remarks:
This function does not take extrapolation into account.

kFCurveDouble EvaluateLeftDerivative ( KTime  pTime,
kFCurveIndex pLast = NULL  
)

Evaluate function left derivative at given time.

Parameters:
pTime  Time of evaluation.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Left derivative at given time.
Remarks:
This function does not take extrapolation into account.

kFCurveDouble EvaluateRightDerivative ( KTime  pTime,
kFCurveIndex pLast = NULL  
)

Evaluate function right derivative at given time.

Parameters:
pTime  Time of evaluation.
pLast  Function curve index to speed up search. If this function is called in a loop, initialize this value to 0 and let it be updated by each call.
Returns:
Right derivative at given time.
Remarks:
This function does not take extrapolation into account.

int FindPeaks ( kFCurveIndex  pLeftKeyIndex,
KTime pPeakTime1,
KTime pPeakTime2  
)

Find the peaks time between 2 keys (a local minimum and/or maximum).

Parameters:
pLeftKeyIndex  Left key index (there must be a right key).
pPeakTime1  First peak time.
pPeakTime2  Second peak time.
Returns:
Number of peaks found.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

int FindPeaks ( kFCurveIndex  pLeftKeyIndex,
kFCurveDouble pPeak1,
kFCurveDouble pPeak2  
)

Find the peaks value between 2 keys (a local minimum and/or maximum).

Parameters:
pLeftKeyIndex  Left key index (there must be a right key).
pPeak1  First peak value.
pPeak2  Second peak value.
Returns:
Number of peaks found.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

int FindPeaks ( kFCurveIndex  pLeftKeyIndex,
KTime pPeakTime1,
kFCurveDouble pPeak1,
KTime pPeakTime2,
kFCurveDouble pPeak2  
)

Find the peaks time and value between 2 keys (a local minimum and/or maximum).

Parameters:
pLeftKeyIndex  Left key index (there must be a right key).
pPeakTime1  First peak time.
pPeak1  First peak value.
pPeakTime2  Second peak time.
pPeak2  Second peak value.
Returns:
Number of peaks found.
Remarks:
Result is undetermined if function curve has no key or index is out of bounds.

void KeyGetPeriods ( KTime pAveragePeriod,
KTime pMinPeriod,
KTime pMaxPeriod  
)

Get key period statistics.

If pAveragePeriod == pMinPeriod, we have iso-sampled data.

Parameters:
pAveragePeriod  Average key period.
pMinPeriod  Minimum period found.
pMaxPeriod  Maximum period found.

HKFCurve Copy ( KTime  pStart = KTIME_MINUS_INFINITE,
KTime  pStop = KTIME_INFINITE  
)

Create a new function curve and copy keys.

Parameters:
pStart  Beginning of time range.
pStop  End of time range.
Returns:
Created function curve.
Remarks:
All keys are always copied. To copy keys in a specific time range, use Replace().

void CopyFrom ( KFCurve pSource,
bool  pWithKeys = true  
)

Copy a function curve content into current function curve.

Parameters:
pSource  Source function curve.
pWithKeys  If true, clear keys in current function curve and copy keys from source function curve. If false, keys in current function curve are left as is.

void Replace ( HKFCurve  pSource,
KTime  pStart = KTIME_MINUS_INFINITE,
KTime  pStop = KTIME_INFINITE,
bool  pUseExactGivenSpan = false,
bool  pKeyStartEndOnNoKey = true,
KTime  pTimeSpanOffset = KTIME_ZERO  
)

Replace keys within a range in current function curve with keys found in a source function curve.

Parameters:
pSource  Source function curve.
pStart  Start of time range.
pStop  End of time range.
pUseExactGivenSpan  false = original behavior where time of first and last key was used
pKeyStartEndOnNoKey  Inserts a key at the beginning and at the end of the range if there is no key to insert.
pTimeSpanOffset 

void ReplaceForQuaternion ( HKFCurve  pSource,
KTime  pStart,
KTime  pStop,
kFCurveDouble  pScaleStart,
kFCurveDouble  pScaleStop,
bool  pUseExactGivenSpan = false,
bool  pKeyStartEndOnNoKey = true,
KTime  pTimeSpanOffset = KTIME_ZERO  
)

Replace keys within a range in current function curve with keys found in a source function curve.

The copied keys have their value scaled with a factor varying linearly in time within the given time range.

Parameters:
pSource  Source function curve.
pStart  Start of time range.
pStop  End of time range.
pScaleStart  Scale factor applied at start of time range.
pScaleStop  Scale factor applied at end of time range.
pUseExactGivenSpan  false = original behavior where time of first and last key was used
pKeyStartEndOnNoKey  Inserts a key at the beginning and at the end of the range if there is no key to insert.
pTimeSpanOffset 

void ReplaceForEulerXYZ ( HKFCurve  pSource,
KTime  pStart,
KTime  pStop,
kFCurveDouble  pAddFromStart,
kFCurveDouble  pAddAfterStop,
bool  pValueSubOffsetAfterStart,
bool  pValueSubOffsetAfterStop,
bool  pUseExactGivenSpan = false,
bool  pKeyStartEndOnNoKey = true,
KTime  pTimeSpanOffset = KTIME_ZERO  
)

Replace keys within a range in current function curve with keys found in a source function curve.

Parameters:
pSource  Source function curve.
pStart  Start of time range.
pStop  End of time range.
pAddFromStart  Offset applied to copied key values within the time range.
pAddAfterStop  Offset applied to key values after the time range.
pValueSubOffsetAfterStart  If true, copied key values within the time range are subtracted from time offset specified by parameter pAddFromStart. If false, copied key values within the time range are added to time offset specified by parameter pAddFromStart.
pValueSubOffsetAfterStop  If true, key values after the time range are subtracted from time offset specified by parameter pAddAfterStop. If false, key values after the time range are added to time offset specified by parameter pAddAfterStop.
pUseExactGivenSpan  false = original behavior where time of first and last key was used
pKeyStartEndOnNoKey  Inserts a key at the beginning and at the end of the range if there is no key to insert
pTimeSpanOffset 

void Insert ( HKFCurve  pSource,
KTime  pInsertTime,
kFCurveDouble  pFirstKeyLeftDerivative,
bool  pFirstKeyIsWeighted = false,
kFCurveDouble  pFirstKeyWeight = KFCURVE_DEFAULT_WEIGHT  
)

Insert all keys found in a source function curve in current function curve.

A time offset is added to copied keys so that the first copied key occurs at the given insertion time. Keys from the source function curve are merged into the current function curve. In other words, no existing key in the current function curve is destroyed unless there is an overlap with a copied key.

Parameters:
pSource  Source function curve.
pInsertTime  Insert time of the first key found in the source function curve.
pFirstKeyLeftDerivative  First key left derivative.
pFirstKeyIsWeighted  First key left weighted state (true if weighted).
pFirstKeyWeight  First key left weight

void Insert ( HKFCurve  pSource,
KTime  pInsertTime,
KFCurveTangeantInfo  pFirstKeyLeftDerivative  
)

Insert all keys found in a source function curve in current function curve.

A time offset is added to copied keys so that the first copied key occurs at the given insertion time. Keys from the source function curve are merged into the current function curve. In other words, no existing key in the current function curve is destroyed unless there is an overlap with a copied key.

Parameters:
pSource  Source function curve.
pInsertTime  Insert time of the first key found in the source function curve.
pFirstKeyLeftDerivative  First key left derivative info.

bool Delete ( kFCurveIndex  pStartIndex,
kFCurveIndex  pStopIndex  
)

Delete keys within an index range.

Index range is inclusive. This function is much faster than multiple removes.

Parameters:
pStartIndex  Index of first deleted key.
pStopIndex  Index of last deleted key.
Returns:
true if the function curve contains keys, false otherwise.
Remarks:
Result is undetermined if function curve has keys but an index is out of bounds.

bool Delete ( KTime  pStart = KTIME_MINUS_INFINITE,
KTime  pStop = KTIME_INFINITE,
bool  pInclusive = false  
)

Delete keys within a time range.

This function is much faster than multiple removes.

Parameters:
pStart  Start of time range.
pStop  End of time range.
pInclusive  Time range include the keys at pStart and pStop if true.
Returns:
true if the function curve contains keys, false otherwise.

bool IsKeyInterpolationPureCubicAuto ( kFCurveIndex  pKeyIndex  ) 

Get if interpolation is cubic and that the tangents and weightings are untouched.

Parameters:
pKeyIndex  Index of the key to test.
Returns:
Returns true if the interpolation is a pure cubic auto.

void ExtractKeysIndex ( KArrayTemplate< int > &  pArray,
int  pMinIndex,
int  pMaxIndex,
double  pMinValue = -K_DOUBLE_MAX,
double  pMaxValue = K_DOUBLE_MAX  
)

Extract All Keys in the Given Selection Span.

Parameters:
pArray  Array where to Stored Found Keys.
pMinIndex  Index where to start the Search.
pMaxIndex  Index where to stop the Search (the last index is the limit, the Key at this index is not tested).
pMinValue  Minimal Value to Consider the Key.
pMaxValue  Maximal Value to Consider the Key.
KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve
KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve KFCurve