#include<kfcurve.h>
A function curve is basically a collection of keys (see classKFCurveKey) sorted in time order. Since it is a function, only one key per time is allowed.
Definition at line678of filekfcurve.h.
Constructor and Destructor | |
KFCurve() | |
Constructor. | |
virtual | ~KFCurve() |
Destructor. | |
IObject_Declare(Implementation) float *GetColor() | |
Get function curve color. | |
void | SetColor(float *pColor) |
Set function curve color. | |
void | SetValue(kFCurveDouble pValue) |
Set default value. | |
KFCURVE_INLINE kFCurveDouble | GetValue() const |
Get default value. | |
Key Management | |
void | ResizeKeyBuffer(int pKeyCount) |
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() |
Get the number of keys. | |
int | KeyGetSelectionCount() |
Get the number of selected keys. | |
void | KeySelectAll() |
Resize fcurve buffer to hold a certain number of key. | |
void | KeyUnselectAll() |
Resize fcurve buffer to hold a certain number of key. | |
KFCurveKey | KeyGet(kFCurveIndex pIndex) |
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. | |
KFCURVE_INLINE bool | KeySet(kFCurveIndex pIndex,KFCurve*pSourceCurve, int pSourceIndex) |
Resize fcurve buffer to hold a certain number of key. | |
int | KeyMove(kFCurveIndex pIndex,KTimepTime) |
Change time of key found at given index. | |
bool | KeyMoveOf(bool pSelectedOnly,KTimepDeltaTime, 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(KTimepTime, kFCurveIndex *pLast=NULL) |
Insert a key at given time. | |
int | KeyAdd(KTimepTime,KFCurveKey&pKey, kFCurveIndex *pLast=NULL) |
Add a key at given time. | |
int | KeyAdd(KTimepTime,KFCurve*pSourceCurve, int pSourceIndex, kFCurveIndex *pLast=NULL) |
Resize fcurve buffer to hold a certain number of key. | |
int | KeyAdd(KTimepTime, kFCurveIndex *pLast=NULL) |
Add a key at given time. | |
int | KeyAppend(KTimepAtTime,KFCurve*pSourceCurve, int pSourceIndex) |
Append a key at the end of the function curve. | |
int | KeyAppendFast(KTimepTime, kFCurveDouble pValue) |
Append a key at the end of the function curve. | |
double | KeyFind(KTimepTime, kFCurveIndex *pLast=NULL) |
Find key index for a given time. | |
Key Manipulation | |
KFCURVE_INLINE void | KeySet(kFCurveIndex pKeyIndex,KTimepTime, kFCurveDouble pValue, kFCurveInterpolation pInterpolation=KFCURVE_INTERPOLATION_CUBIC, kFCurveTangeantMode pTangentMode=KFCURVE_TANGEANT_AUTO, kFCurveDouble pData0=0.0, kFCurveDouble pData1=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. | |
KFCURVE_INLINE void | KeySetTCB(kFCurveIndex pKeyIndex,KTimepTime, kFCurveDouble pValue, float pData0=0.0f, float pData1=0.0f, float pData2=0.0f) |
Set a key with cubic interpolation, TCB tangent mode. | |
KFCURVE_INLINE kFCurveInterpolation | KeyGetInterpolation(kFCurveIndex pKeyIndex) |
Get key interpolation type. | |
KFCURVE_INLINE void | KeySetInterpolation(kFCurveIndex pKeyIndex, kFCurveInterpolation pInterpolation) |
Set key interpolation type. | |
KFCURVE_INLINE kFCurveConstantMode | KeyGetConstantMode(kFCurveIndex pKeyIndex) |
Get key constant mode. | |
KFCURVE_INLINE kFCurveTangeantMode | KeyGetTangeantMode(kFCurveIndex pKeyIndex, bool pIncludeOverrides=false) |
Get key tangent mode. | |
KFCURVE_INLINE kFCurveTangeantWeightMode | KeyGetTangeantWeightMode(kFCurveIndex pKeyIndex) |
Get key tangent weight mode. | |
KFCURVE_INLINE kFCurveTangeantVelocityMode | KeyGetTangeantVelocityMode(kFCurveIndex pKeyIndex) |
Get key tangent velocity mode. | |
KFCURVE_INLINE void | KeySetConstantMode(kFCurveIndex pKeyIndex, kFCurveConstantMode pMode) |
Set key constant mode. | |
KFCURVE_INLINE void | KeySetTangeantMode(kFCurveIndex pKeyIndex, kFCurveTangeantMode pTangent) |
Set key tangent mode. | |
KFCURVE_INLINE void | KeySetTangeantWeightMode(kFCurveIndex pKeyIndex, kFCurveTangeantWeightMode pTangentWeightMode, kFCurveTangeantWeightMode pMask=KFCURVE_WEIGHTED_ALL) |
Set key tengent weight mode as double value (cubic interpolation, non TCB tangent mode). | |
KFCURVE_INLINE void | KeySetTangeantVelocityMode(kFCurveIndex pKeyIndex, kFCurveTangeantVelocityMode pTangentVelocityMode, kFCurveTangeantVelocityMode pMask=KFCURVE_VELOCITY_ALL) |
Set key tengent velocity mode as double value (cubic interpolation, non TCB tangent mode). | |
KFCURVE_INLINE kFCurveDouble | KeyGetDataDouble(kFCurveIndex pKeyIndex,EKFCurveDataIndexpIndex) |
Get key data as double value (cubic interpolation, non TCB tangent mode). | |
KFCURVE_INLINE void | KeySetDataDouble(kFCurveIndex pKeyIndex,EKFCurveDataIndexpIndex, kFCurveDouble pValue) |
Set data as double value (cubic interpolation, non TCB tangent mode). | |
KFCURVE_INLINE float | KeyGetDataFloat(kFCurveIndex pKeyIndex,EKFCurveDataIndexpIndex) |
Get key data as float value (cubic interpolation, TCB tangent mode). | |
KFCURVE_INLINE void | KeySetDataFloat(kFCurveIndex pKeyIndex,EKFCurveDataIndexpIndex, float pValue) |
Set data as float value (cubic interpolation, TCB tangent mode). | |
KFCURVE_INLINE const float * | KeyGetDataPtr(kFCurveIndex pKeyIndex) |
Get key data as a pointer Warning: not supported in 'double' mode. | |
KFCURVE_INLINE kFCurveDouble | KeyGetValue(kFCurveIndex pKeyIndex) |
Get key value. | |
KFCURVE_INLINE void | KeySetValue(kFCurveIndex pKeyIndex, kFCurveDouble pValue) |
Set key value. | |
KFCURVE_INLINE void | KeyIncValue(kFCurveIndex pKeyIndex, kFCurveDouble pValue) |
Increment key value. | |
KFCURVE_INLINE void | KeyMultValue(kFCurveIndex pKeyIndex, kFCurveDouble pValue) |
Multiply key value. | |
KFCURVE_INLINE void | KeyMultTangeant(kFCurveIndex pKeyIndex, kFCurveDouble pValue) |
Multiply key tangents. | |
KFCURVE_INLINEKTime | KeyGetTime(kFCurveIndex pKeyIndex) |
Get key time. | |
KFCURVE_INLINE void | KeySetTime(kFCurveIndex pKeyIndex,KTimepTime) |
Set key time. | |
KFCURVE_INLINE void | KeyIncTime(kFCurveIndex pKeyIndex,KTimepTime) |
Increment key time. | |
KFCURVE_INLINE void | KeySetSelected(kFCurveIndex pKeyIndex, bool pSelected) |
Set if key is currently selected. | |
KFCURVE_INLINE bool | KeyGetSelected(kFCurveIndex pKeyIndex) |
Return if key is currently selected. | |
KFCURVE_INLINE void | KeySetMarkedForManipulation(kFCurveIndex pKeyIndex, bool pMark) |
Set if key is currently marked for manipulation. | |
KFCURVE_INLINE bool | KeyGetMarkedForManipulation(kFCurveIndex pKeyIndex) |
Return if key is currently marked for manipulation. | |
KFCURVE_INLINE void | KeySetTangeantVisibility(kFCurveIndex pKeyIndex, kFCurveTangeantVisibility pVisibility) |
Set tangent visibility mode. | |
KFCURVE_INLINE kFCurveTangeantVisibility | KeyGetTangeantVisibility(kFCurveIndex pKeyIndex) |
Return tangent visibility mode. | |
KFCURVE_INLINE void | KeySetBreak(kFCurveIndex pKeyIndex, bool pVal) |
Set/Unset Break tangeant Only valid for User and Auto keys. | |
KFCURVE_INLINE bool | KeyGetBreak(kFCurveIndex pKeyIndex) |
Get if tangeant 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,KFCurveTangeantInfopValue, 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,KFCurveTangeantInfopValue, 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) |
Get the left tangent weight mode of a key. | |
bool | KeyIsRightTangeantWeighted(kFCurveIndex pIndex) |
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) |
Get the weight value component of the left tangent of a key. | |
kFCurveDouble | KeyGetRightTangeantWeight(kFCurveIndex pIndex) |
Get the weight value component of the right tangent of a key. | |
void | KeySetLeftTangeantWeight(kFCurveIndex pIndex, kFCurveDouble pWeight) |
Set the left tangent weight of a key. | |
void | KeySetRightTangeantWeight(kFCurveIndex pIndex, kFCurveDouble pWeight) |
Set the right tangent weight of a key. | |
bool | KeyIsLeftTangeantVelocity(kFCurveIndex pIndex) |
Get the left tangent velocity mode of a key. | |
bool | KeyIsRightTangeantVelocity(kFCurveIndex pIndex) |
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) |
Get the velocity value component of the left tangent of a key. | |
kFCurveDouble | KeyGetRightTangeantVelocity(kFCurveIndex pIndex) |
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_INLINE void | SetPreExtrapolation(kFCurveExtrapolationMode pExtrapolation) |
Set pre-extrapolation mode. | |
KFCURVE_INLINE kFCurveExtrapolationMode | GetPreExtrapolation() |
Get pre-extrapolation mode. | |
KFCURVE_INLINE void | SetPreExtrapolationCount(kULong pCount) |
Set pre-extrapolation count. | |
KFCURVE_INLINE kULong | GetPreExtrapolationCount() |
Get pre-extrapolation count. | |
KFCURVE_INLINE void | SetPostExtrapolation(kFCurveExtrapolationMode pExtrapolation) |
Set post-extrapolation mode. | |
KFCURVE_INLINE kFCurveExtrapolationMode | GetPostExtrapolation() |
Get post-extrapolation mode. | |
KFCURVE_INLINE void | SetPostExtrapolationCount(kULong pCount) |
Set post-extrapolation count. | |
KFCURVE_INLINE kULong | GetPostExtrapolationCount() |
Get post-extrapolation count. | |
int | KeyGetCountAll() |
Get total number of keys taking extrapolation into account. | |
double | KeyFindAll(KTimepTime, kFCurveIndex *pLast=NULL) |
Find key index for a given time taking extrapolation into account. | |
Evaluation and Analysis | |
kFCurveDouble | Evaluate(KTimepTime, 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(KTimepTime, kFCurveIndex *pLast=NULL) |
Evaluate function left derivative at given time. | |
kFCurveDouble | EvaluateRightDerivative(KTimepTime, 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(KTimepStart=KTIME_MINUS_INFINITE,KTimepStop=KTIME_INFINITE) |
Create a new function curve and copy keys found between a given time range. | |
void | CopyFrom(KFCurve&pSource, bool pWithKeys=true) |
Copy a function curve content into current function curve. | |
void | Replace(HKFCurvepSource,KTimepStart=KTIME_MINUS_INFINITE,KTimepStop=KTIME_INFINITE, bool pUseExactGivenSpan=false, bool pKeyStartEndOnNoKey=true,KTimepTimeSpanOffset=KTIME_ZERO) |
Replace keys within a range in current function curve with keys found in a source function curve. | |
void | ReplaceForQuaternion(HKFCurvepSource,KTimepStart,KTimepStop, kFCurveDouble pScaleStart, kFCurveDouble pScaleStop, bool pUseExactGivenSpan=false, bool pKeyStartEndOnNoKey=true,KTimepTimeSpanOffset=KTIME_ZERO) |
Replace keys within a range in current function curve with keys found in a source function curve. | |
void | ReplaceForEulerXYZ(HKFCurvepSource,KTimepStart,KTimepStop, kFCurveDouble pAddFromStart, kFCurveDouble pAddAfterStop, bool pValueSubOffsetAfterStart, bool pValueSubOffsetAfterStop, bool pUseExactGivenSpan=false, bool pKeyStartEndOnNoKey=true,KTimepTimeSpanOffset=KTIME_ZERO) |
Replace keys within a range in current function curve with keys found in a source function curve. | |
void | Insert(HKFCurvepSource,KTimepInsertTime, 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(HKFCurvepSource,KTimepInsertTime,KFCurveTangeantInfopFirstKeyLeftDerivative) |
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(KTimepStart=KTIME_MINUS_INFINITE,KTimepStop=KTIME_INFINITE) |
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(KArraykInt&pArray, int pMinIndex, int pMaxIndex, double pMinValue=-K_DOUBLE_MAX, double pMaxValue=K_DOUBLE_MAX) |
Extract All Keys in the Given Selection Span. |
KFCurve | ( | ) |
Constructor.
virtual ~KFCurve | ( | ) | [virtual] |
Destructor.
IObject_Declare | ( | Implementation | ) |
Get function curve color.
void SetColor | ( | float * | pColor | ) |
Set function curve color.
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.
pValue | Default value. |
KFCURVE_INLINE kFCurveDouble GetValue | ( | ) | const |
Get default value.
Default value is used when there is no key in the function curve.
void ResizeKeyBuffer | ( | int | pKeyCount | ) |
Resize fcurve buffer to hold a certain number of key.
pKeyCount | Number of key the function curve will eventually hold. |
void KeyModifyBegin | ( | ) |
Call this function prior to modifying the keys of a function curve.
Call functionKFCurve::KeyModifyEnd()after modification of the keys are completed.
void KeyModifyEnd | ( | ) |
Call this function after modification of the keys of a function curve.
Call functionKFCurve::KeyModifyBegin()prior to modifying the keys.
int KeyGetCount | ( | ) |
Get the number of keys.
int KeyGetSelectionCount | ( | ) |
Get the number of selected keys.
void KeySelectAll | ( | ) |
Resize fcurve buffer to hold a certain number of key.
pKeyCount | Number of key the function curve will eventually hold. |
void KeyUnselectAll | ( | ) |
Resize fcurve buffer to hold a certain number of key.
pKeyCount | Number of key the function curve will eventually hold. |
KFCurveKeyKeyGet | ( | kFCurveIndex | pIndex | ) |
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.
KFCURVE_INLINE bool KeySet | ( | kFCurveIndex | pIndex, | |
KFCurve* | pSourceCurve, | |||
int | pSourceIndex | |||
) |
Resize fcurve buffer to hold a certain number of key.
pKeyCount | Number of key the function curve will eventually hold. |
int KeyMove | ( | kFCurveIndex | pIndex, | |
KTime | pTime | |||
) |
Change time of key found at given index.
pIndex | Index of key to move. | |
pTime | Destination time. |
bool KeyMoveOf | ( | bool | pSelectedOnly, | |
KTime | pDeltaTime, | |||
kFCurveDouble | pDeltaValue | |||
) |
Add time and value offsets to keys, all or selected only.
pSelectedOnly | If set totrue , only selected keys are affected. Otherwise, all keys are affected. | |
pDeltaTime | Time offset added to keys. | |
pDeltaValue | Value offset added to keys. |
bool KeyMoveValueTo | ( | bool | pSelectedOnly, | |
kFCurveDouble | pValue | |||
) |
Set value of keys, all or selected only.
pSelectedOnly | If set totrue , only selected keys are affected. Otherwise, all keys are affected. | |
pValue | Value set to keys. |
bool KeyScaleValue | ( | bool | pSelectedOnly, | |
kFCurveDouble | pMultValue | |||
) |
Scale value of keys, all or selected only.
pSelectedOnly | If set totrue , only selected keys are affected. Otherwise, all keys are affected. | |
pMultValue | Scale applied on key values. |
bool KeyScaleTangeant | ( | bool | pSelectedOnly, | |
kFCurveDouble | pMultValue | |||
) |
Scale tangent of keys, all or selected only.
pSelectedOnly | If set totrue , only selected keys are affected. Otherwise, all keys are affected. | |
pMultValue | Scale applied on key tangents. |
bool KeyScaleValueAndTangeant | ( | bool | pSelectedOnly, | |
kFCurveDouble | pMultValue | |||
) |
Scale value and tangent of keys, all or selected only.
pSelectedOnly | If set totrue , only selected keys are affected. Otherwise, all keys are affected. | |
pMultValue | Scale applied on key values and tangents. |
bool KeyRemove | ( | kFCurveIndex | pIndex | ) |
Remove key at given index.
pIndex | Index of key to remove. |
int KeyInsert | ( | KTime | pTime, | |
kFCurveIndex * | pLast=NULL | |||
) |
Insert a key at given time.
This function SHOULD be used instead ofKFCurve::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.
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. |
int KeyAdd | ( | KTime | pTime, | |
KFCurveKey& | pKey, | |||
kFCurveIndex * | pLast=NULL | |||
) |
Add a key at given time.
FunctionKFCurve::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.
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. |
Resize fcurve buffer to hold a certain number of key.
pKeyCount | Number of key the function curve will eventually hold. |
int KeyAdd | ( | KTime | pTime, | |
kFCurveIndex * | pLast=NULL | |||
) |
Add a key at given time.
FunctionKFCurve::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.
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. |
Append a key at the end of the function curve.
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. |
int KeyAppendFast | ( | KTime | pTime, | |
kFCurveDouble | pValue | |||
) |
Append a key at the end of the function curve.
pTime | Time of appended key, must be superior to the last key time. | |
pValue | Value of appended key. |
double KeyFind | ( | KTime | pTime, | |
kFCurveIndex * | pLast=NULL | |||
) |
Find key index for a given time.
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. |
KFCURVE_INLINE void KeySet | ( | kFCurveIndex | pKeyIndex, | |
KTime | pTime, | |||
kFCurveDouble | pValue, | |||
kFCurveInterpolation | pInterpolation=KFCURVE_INTERPOLATION_CUBIC , | |||
kFCurveTangeantMode | pTangentMode=KFCURVE_TANGEANT_AUTO , | |||
kFCurveDouble | pData0=0.0 , | |||
kFCurveDouble | pData1=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.
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 | |
pData0 | Right slope. | |
pData1 | 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. |
KFCURVE_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.
pKeyIndex | Key index | |
pTime | Key time. | |
pValue | Key value. | |
pData0 | Tension. | |
pData1 | Continuity. | |
pData2 | Bias. |
KFCURVE_INLINE kFCurveInterpolation KeyGetInterpolation | ( | kFCurveIndex | pKeyIndex | ) |
Get key interpolation type.
Interpolation types are: KFCURVE_INTERPOLATION_CONSTANT, KFCURVE_INTERPOLATION_LINEAR, KFCURVE_INTERPOLATION_CUBIC
pKeyIndex | Key index |
KFCURVE_INLINE void KeySetInterpolation | ( | kFCurveIndex | pKeyIndex, | |
kFCurveInterpolation | pInterpolation | |||
) |
Set key interpolation type.
pKeyIndex | Key index | |
pInterpolation | Key interpolation type. Interpolation types are: KFCURVE_INTERPOLATION_CONSTANT, KFCURVE_INTERPOLATION_LINEAR, KFCURVE_INTERPOLATION_CUBIC |
KFCURVE_INLINE kFCurveConstantMode KeyGetConstantMode | ( | kFCurveIndex | pKeyIndex | ) |
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
pKeyIndex | Key index |
KFCURVE_INLINE kFCurveTangeantMode KeyGetTangeantMode | ( | kFCurveIndex | pKeyIndex, | |
bool | pIncludeOverrides=false | |||
) |
Get key tangent mode.
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
KFCURVE_INLINE kFCurveTangeantWeightMode KeyGetTangeantWeightMode | ( | kFCurveIndex | pKeyIndex | ) |
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
KFCURVE_INLINE kFCurveTangeantVelocityMode KeyGetTangeantVelocityMode | ( | kFCurveIndex | pKeyIndex | ) |
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
KFCURVE_INLINE void KeySetConstantMode | ( | kFCurveIndex | pKeyIndex, | |
kFCurveConstantMode | pMode | |||
) |
Set key constant mode.
Warning: This method is meaningful for constant interpolation only.
pKeyIndex | Key index | |
pMode | Key consant mode. Constant modes are: KFCURVE_CONSTANT_STANDARD KFCURVE_CONSTANT_NEXT |
KFCURVE_INLINE void KeySetTangeantMode | ( | kFCurveIndex | pKeyIndex, | |
kFCurveTangeantMode | pTangent | |||
) |
Set key tangent mode.
Warning: This method is meaningful for cubic interpolation only.
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 |
KFCURVE_INLINE void KeySetTangeantWeightMode | ( | kFCurveIndex | pKeyIndex, | |
kFCurveTangeantWeightMode | pTangentWeightMode, | |||
kFCurveTangeantWeightMode | pMask=KFCURVE_WEIGHTED_ALL | |||
) |
Set key tengent weight mode as double value (cubic interpolation, non TCB tangent mode).
Warning: This method is meaningful for cubic interpolation only.
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 |
KFCURVE_INLINE void KeySetTangeantVelocityMode | ( | kFCurveIndex | pKeyIndex, | |
kFCurveTangeantVelocityMode | pTangentVelocityMode, | |||
kFCurveTangeantVelocityMode | pMask=KFCURVE_VELOCITY_ALL | |||
) |
Set key tengent velocity mode as double value (cubic interpolation, non TCB tangent mode).
Warning: This method is meaningful for cubic interpolation only.
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 |
KFCURVE_INLINE kFCurveDouble KeyGetDataDouble | ( | kFCurveIndex | pKeyIndex, | |
EKFCurveDataIndex | pIndex | |||
) |
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. UseKFCurve::EvaluateLeftDerivative()andKFCurve::EvaluateRightDerivative()to find slope values. Warning: Using this method for TCB tangent mode key will return unpredicted values. Use KFCurve::GetDataFloat() instead.
pKeyIndex | Key index | |
pIndex | Data index, either KFCURVEKEY_RIGHT_SLOPE, KFCURVEKEY_NEXT_LEFT_SLOPE. KFCURVEKEY_NEXT_RIGHT_WEIGHT. KFCURVEKEY_NEXT_LEFT_WEIGHT |
KFCURVE_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 tangeant mode key will result in unpredicted curve behavior for this key. Use KFCurve::SetDataFloat() instead.
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). |
KFCURVE_INLINE float KeyGetDataFloat | ( | kFCurveIndex | pKeyIndex, | |
EKFCurveDataIndex | pIndex | |||
) |
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.
pKeyIndex | Key index | |
pIndex | Data index, either KFCURVEKEY_TCB_TENSION, KFCURVEKEY_TCB_CONTINUITY or KFCURVEKEY_TCB_BIAS. |
KFCURVE_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.
pKeyIndex | Key index | |
pIndex | Data index, either KFCURVEKEY_TCB_TENSION, KFCURVEKEY_TCB_CONTINUITY or KFCURVEKEY_TCB_BIAS. | |
pValue | The data value to set. |
KFCURVE_INLINE const float* KeyGetDataPtr | ( | kFCurveIndex | pKeyIndex | ) |
Get key data as a pointer Warning: not supported in 'double' mode.
KFCURVE_INLINE kFCurveDouble KeyGetValue | ( | kFCurveIndex | pKeyIndex | ) |
Get key value.
KFCURVE_INLINE void KeySetValue | ( | kFCurveIndex | pKeyIndex, | |
kFCurveDouble | pValue | |||
) |
Set key value.
KFCURVE_INLINE void KeyIncValue | ( | kFCurveIndex | pKeyIndex, | |
kFCurveDouble | pValue | |||
) |
Increment key value.
pKeyIndex | Key index | |
pValue | Value by which key value is incremented. |
KFCURVE_INLINE void KeyMultValue | ( | kFCurveIndex | pKeyIndex, | |
kFCurveDouble | pValue | |||
) |
Multiply key value.
pKeyIndex | Key index | |
pValue | Value by which the key value is multiplied. |
KFCURVE_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.
pKeyIndex | Key index | |
pValue | Value by which key tangents are multiplied. |
KFCURVE_INLINEKTimeKeyGetTime | ( | kFCurveIndex | pKeyIndex | ) |
Get key time.
pKeyIndex | Key index |
KFCURVE_INLINE void KeySetTime | ( | kFCurveIndex | pKeyIndex, | |
KTime | pTime | |||
) |
Set key time.
pKeyIndex | Key index | |
pTime | Key time (time at which this key is occuring). |
KFCURVE_INLINE void KeyIncTime | ( | kFCurveIndex | pKeyIndex, | |
KTime | pTime | |||
) |
Increment key time.
pKeyIndex | Key index | |
pTime | Time value by which the key time is incremented. |
KFCURVE_INLINE void KeySetSelected | ( | kFCurveIndex | pKeyIndex, | |
bool | pSelected | |||
) |
Set if key is currently selected.
pKeyIndex | Key index | |
pSelected | Selection flag. |
KFCURVE_INLINE bool KeyGetSelected | ( | kFCurveIndex | pKeyIndex | ) |
Return if key is currently selected.
KFCURVE_INLINE void KeySetMarkedForManipulation | ( | kFCurveIndex | pKeyIndex, | |
bool | pMark | |||
) |
Set if key is currently marked for manipulation.
pKeyIndex | Key index | |
pMark | Mark flag. |
KFCURVE_INLINE bool KeyGetMarkedForManipulation | ( | kFCurveIndex | pKeyIndex | ) |
Return if key is currently marked for manipulation.
KFCURVE_INLINE void KeySetTangeantVisibility | ( | kFCurveIndex | pKeyIndex, | |
kFCurveTangeantVisibility | pVisibility | |||
) |
Set tangent visibility mode.
Warning: This method is meaningful for cubic interpolation only.
pKeyIndex | Key index | |
pVisibility | Tangent visibility mode. Tangent visibility modes are: KFCURVE_TANGEANT_SHOW_NONE KFCURVE_TANGEANT_SHOW_LEFT KFCURVE_TANGEANT_SHOW_RIGHT |
KFCURVE_INLINE kFCurveTangeantVisibility KeyGetTangeantVisibility | ( | kFCurveIndex | pKeyIndex | ) |
Return tangent visibility mode.
Warning: This method is meaningful for cubic interpolation only.
KFCURVE_INLINE void KeySetBreak | ( | kFCurveIndex | pKeyIndex, | |
bool | pVal | |||
) |
Set/Unset Break tangeant Only valid for User and Auto keys.
KFCURVE_INLINE bool KeyGetBreak | ( | kFCurveIndex | pKeyIndex | ) |
Get if tangeant is break Only valid for User and Auto keys.
void KeyTangeantSetInterpolation | ( | bool | pSelectedOnly, | |
kFCurveInterpolation | pInterpolation | |||
) |
Set interpolation type on keys, all or selected only.
pSelectedOnly | If set totrue , 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.
pSelectedOnly | If set totrue , only selected keys are affected. Otherwise, all keys are affected. | |
pTangentMode | Tangent mode. |
kFCurveDouble KeyGetLeftDerivative | ( | kFCurveIndex | pIndex | ) |
Get the left derivative of a key.
pIndex | Index of key. |
void KeySetLeftDerivative | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pValue | |||
) |
Set the left derivative of a key.
pIndex | Index of key. | |
pValue | Left derivative. |
kFCurveDouble KeyGetLeftAuto | ( | kFCurveIndex | pIndex, | |
bool | pApplyOvershootProtection=false | |||
) |
Get the left auto parametric of a key.
pIndex | Index of key. | |
pApplyOvershootProtection | Clamp is taking into account. |
void KeySetLeftAuto | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pValue | |||
) |
Set the left auto parametric of a key.
pIndex | Index of key. | |
pValue | Left auto parametric . |
KFCurveTangeantInfoKeyGetLeftDerivativeInfo | ( | kFCurveIndex | pIndex | ) |
Get the left derivative info of a key.
pIndex | Index of key. |
void KeySetLeftDerivativeInfo | ( | kFCurveIndex | pIndex, | |
KFCurveTangeantInfo | pValue, | |||
bool | pForceDerivative=false | |||
) |
Set the left derivative info of a key.
pIndex | Index of key. | |
pValue | Left derivative. | |
pForceDerivative |
void KeyIncLeftDerivative | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pInc | |||
) |
Increment the left derivative of a key.
pIndex | Index of key. | |
pInc | Increment to left derivative. |
kFCurveDouble KeyGetRightDerivative | ( | kFCurveIndex | pIndex | ) |
Get the right derivative of a key.
pIndex | Index of key. |
void KeySetRightDerivative | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pValue | |||
) |
Set the right derivative of a key.
pIndex | Index of key. | |
pValue | Right derivative. |
kFCurveDouble KeyGetRightAuto | ( | kFCurveIndex | pIndex, | |
bool | pApplyOvershootProtection=false | |||
) |
Get the right auto parametric of a key.
pIndex | Index of key. | |
pApplyOvershootProtection | Clamp is taking into account. |
void KeySetRightAuto | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pValue | |||
) |
Set the right auto parametric of a key.
pIndex | Index of key. | |
pValue | Right auto parametric . |
KFCurveTangeantInfoKeyGetRightDerivativeInfo | ( | kFCurveIndex | pIndex | ) |
Get the right derivative info of a key.
pIndex | Index of key. |
void KeySetRightDerivativeInfo | ( | kFCurveIndex | pIndex, | |
KFCurveTangeantInfo | pValue, | |||
bool | pForceDerivative=false | |||
) |
Set the right derivative info of a key.
pIndex | Index of key. | |
pValue | Right derivative. | |
pForceDerivative |
void KeyIncRightDerivative | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pInc | |||
) |
Increment the right derivative of a key.
pIndex | Index of key. | |
pInc | Increment to right derivative. |
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.
pIndex | Index of key. | |
pValue | Left derivative 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.
pIndex | Index of key. | |
pValue | Right derivative as a Bezier tangent. |
void KeyMultDerivative | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pMultValue | |||
) |
Multiply the Derivative of a key.
pIndex | Index of key. | |
pMultValue | Value that multiply Derivative |
bool KeyIsLeftTangeantWeighted | ( | kFCurveIndex | pIndex | ) |
Get the left tangent weight mode of a key.
pIndex | Index of key. |
bool KeyIsRightTangeantWeighted | ( | kFCurveIndex | pIndex | ) |
Get the right tangent weight mode of a key.
pIndex | Index of key. |
void KeySetLeftTangeantWeightedMode | ( | kFCurveIndex | pIndex, | |
bool | pWeighted | |||
) |
Set the left tangent weight mode of a key.
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.
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 | ) |
Get the weight value component of the left tangent of a key.
pIndex | Index of key. |
kFCurveDouble KeyGetRightTangeantWeight | ( | kFCurveIndex | pIndex | ) |
Get the weight value component of the right tangent of a key.
pIndex | Index of key. |
void KeySetLeftTangeantWeight | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pWeight | |||
) |
Set the left tangent weight of a key.
pIndex | Index of key. | |
pWeight | Weight 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. |
void KeySetRightTangeantWeight | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pWeight | |||
) |
Set the right tangent weight of a key.
pIndex | Index of key. | |
pWeight | Weight 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. |
bool KeyIsLeftTangeantVelocity | ( | kFCurveIndex | pIndex | ) |
Get the left tangent velocity mode of a key.
pIndex | Index of key. |
bool KeyIsRightTangeantVelocity | ( | kFCurveIndex | pIndex | ) |
Get the right tangent velocity mode of a key.
pIndex | Index of key. |
void KeySetLeftTangeantVelocityMode | ( | kFCurveIndex | pIndex, | |
bool | pVelocity | |||
) |
Set the left tangent velocity mode of a key.
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.
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 | ) |
Get the velocity value component of the left tangent of a key.
pIndex | Index of key. |
kFCurveDouble KeyGetRightTangeantVelocity | ( | kFCurveIndex | pIndex | ) |
Get the velocity value component of the right tangent of a key.
pIndex | Index of key. |
void KeySetLeftTangeantVelocity | ( | kFCurveIndex | pIndex, | |
kFCurveDouble | pVelocity | |||
) |
Set the left tangent velocity of a key.
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.
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. |
KFCURVE_INLINE void SetPreExtrapolation | ( | kFCurveExtrapolationMode | pExtrapolation | ) |
Set pre-extrapolation mode.
KFCURVE_INLINE kFCurveExtrapolationMode GetPreExtrapolation | ( | ) |
Get pre-extrapolation mode.
KFCURVE_INLINE void SetPreExtrapolationCount | ( | kULong | pCount | ) |
Set pre-extrapolation count.
pCount | Number of repetitions if pre-extrapolation mode is KFCURVE_EXTRAPOLATION_REPETITION or KFCURVE_EXTRAPOLATION_MIRROR_REPETITION. |
KFCURVE_INLINE kULong GetPreExtrapolationCount | ( | ) |
Get pre-extrapolation count.
KFCURVE_INLINE void SetPostExtrapolation | ( | kFCurveExtrapolationMode | pExtrapolation | ) |
Set post-extrapolation mode.
KFCURVE_INLINE kFCurveExtrapolationMode GetPostExtrapolation | ( | ) |
Get post-extrapolation mode.
KFCURVE_INLINE void SetPostExtrapolationCount | ( | kULong | pCount | ) |
Set post-extrapolation count.
pCount | Number of repetitions if post-extrapolation mode is KFCURVE_EXTRAPOLATION_REPETITION or KFCURVE_EXTRAPOLATION_MIRROR_REPETITION. |
KFCURVE_INLINE kULong GetPostExtrapolationCount | ( | ) |
Get post-extrapolation count.
int KeyGetCountAll | ( | ) |
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.
double KeyFindAll | ( | KTime | pTime, | |
kFCurveIndex * | pLast=NULL | |||
) |
Find key index for a given time taking extrapolation into account.
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. |
kFCurveDouble Evaluate | ( | KTime | pTime, | |
kFCurveIndex * | pLast=NULL | |||
) |
Evaluate function curve value at a given time.
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. |
kFCurveDouble EvaluateIndex | ( | double | pIndex | ) |
Evaluate function curve value at a given key index.
pIndex | Any value between 0 andKFCurve::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. |
kFCurveDouble EvaluateLeftDerivative | ( | KTime | pTime, | |
kFCurveIndex * | pLast=NULL | |||
) |
Evaluate function left derivative at given time.
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. |
kFCurveDouble EvaluateRightDerivative | ( | KTime | pTime, | |
kFCurveIndex * | pLast=NULL | |||
) |
Evaluate function right derivative at given time.
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. |
Find the peaks time between 2 keys (a local minimum and/or maximum).
pLeftKeyIndex | Left key index (there must be a right key). | |
pPeakTime1 | First peak time. | |
pPeakTime2 | Second peak time. |
int FindPeaks | ( | kFCurveIndex | pLeftKeyIndex, | |
kFCurveDouble& | pPeak1, | |||
kFCurveDouble& | pPeak2 | |||
) |
Find the peaks value between 2 keys (a local minimum and/or maximum).
pLeftKeyIndex | Left key index (there must be a right key). | |
pPeak1 | First peak value. | |
pPeak2 | Second peak value. |
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).
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. |
Get key period statistics.
If pAveragePeriod == pMinPeriod, we have iso-sampled data.
pAveragePeriod | Average key period. | |
pMinPeriod | Minimum period found. | |
pMaxPeriod | Maximum period found. |
Create a new function curve and copy keys found between a given time range.
Time range is inclusive.
pStart | Start of time range. | |
pStop | End of time range. |
void CopyFrom | ( | KFCurve& | pSource, | |
bool | pWithKeys=true | |||
) |
Copy a function curve content into current function curve.
pSource | Source function curve. | |
pWithKeys | Iftrue , clear keys in current function curve and copy keys from source function curve. Iffalse , 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.
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.
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.
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 | Iftrue , copied key values within the time range are substracted from time offset specified by parameterpAddFromStart . Iffalse , copied key values within the time range are added to time offset specified by parameterpAddFromStart . | |
pValueSubOffsetAfterStop | Iftrue , key values after the time range are substracted from time offset specified by parameterpAddAfterStop . Iffalse , key values after the time range are added to time offset specified by parameterpAddAfterStop . | |
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.
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.
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.
pStartIndex | Index of first deleted key. | |
pStopIndex | Index of last deleted key. |
true
if the function curve contains keys,false
otherwise.Delete keys within a time range.
Time range is inclusive. This function is much faster than multiple removes.
pStart | Start of time range. | |
pStop | End of time range. |
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.
pKeyIndex | Index of the key to test. |
void ExtractKeysIndex | ( | KArraykInt& | pArray, | |
int | pMinIndex, | |||
int | pMaxIndex, | |||
double | pMinValue=-K_DOUBLE_MAX , | |||
double | pMaxValue=K_DOUBLE_MAX | |||
) |
Extract All Keys in the Given Selection Span.
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. |