KFCurveKey Class Reference

#include <kfcurve.h>

List of all members.


Detailed Description

Defines a key within a function curve.

Remarks:
Implementation was made for performance. Keep in mind that there is no check for consistency and memory management ever made throughout the methods' code. This class must be used with a good understanding of its interface. Default constructor is used, which does not initialize data member. If an instance has to be initialized, use function KFCurveKey::Set().

Definition at line 313 of file kfcurve.h.

Public Member Functions

 KFCurveKey ()
void Set (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.
void SetTCB (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.
void Set (KFCurveKey &pSource)
 Key assignment.
kFCurveInterpolation GetInterpolation ()
 Get key interpolation type.
void SetInterpolation (kFCurveInterpolation pInterpolation)
 Set key interpolation type.
kFCurveConstantMode GetConstantMode ()
 Get key constant mode.
kFCurveTangeantMode GetTangeantMode (bool pIncludeOverrides=false)
 Get key tangent mode.
kFCurveTangeantWeightMode GetTangeantWeightMode ()
 Get key tangent weight mode.
kFCurveTangeantVelocityMode GetTangeantVelocityMode ()
 Get key tangent velocity mode.
void SetConstantMode (kFCurveConstantMode pMode)
 Set key constant mode.
void SetTangeantMode (kFCurveTangeantMode pTangent)
 Set key tangent mode.
void SetTangeantWeightMode (kFCurveTangeantWeightMode pTangentWeightMode, kFCurveTangeantWeightMode pMask=KFCURVE_WEIGHTED_ALL)
 Set key tangent weight mode as double value (cubic interpolation, non TCB tangent mode).
void SetTangeantVelocityMode (kFCurveTangeantVelocityMode pTangentVelocityMode, kFCurveTangeantVelocityMode pMask=KFCURVE_VELOCITY_ALL)
 Set key tangent velocity mode as double value (cubic interpolation, non TCB tangent mode).
kFCurveDouble GetDataDouble (EKFCurveDataIndex pIndex)
 Get key data as double value (cubic interpolation, non TCB tangent mode).
void SetDataDouble (EKFCurveDataIndex pIndex, kFCurveDouble pValue)
 Set data as double value (cubic interpolation, non TCB tangent mode).
float GetDataFloat (EKFCurveDataIndex pIndex)
 Get key data as float value (cubic interpolation, TCB tangent mode).
void SetDataFloat (EKFCurveDataIndex pIndex, float pValue)
 Set data as float value (cubic interpolation, TCB tangent mode).
float * GetDataPtr ()
 Get key data as a pointer Warning: not supported in 'double' mode.
kFCurveDouble GetValue ()
 Get key value.
void SetValue (kFCurveDouble pValue)
 Set key value.
void IncValue (kFCurveDouble pValue)
 Increment key value.
void MultValue (kFCurveDouble pValue)
 Multiply key value.
void MultTangeant (kFCurveDouble pValue)
 Multiply key tangents.
KTime GetTime ()
 Get key time.
void SetTime (KTime pTime)
 Set key time.
void IncTime (KTime pTime)
 Increment key time.
void SetSelected (bool pSelected)
 Set if key is currently selected.
bool GetSelected ()
 Return if key is currently selected.
void SetMarkedForManipulation (bool pMark)
 Set if key is currently marked for manipulation.
bool GetMarkedForManipulation ()
 Return if key is currently marked for manipulation.
void SetTangeantVisibility (kFCurveTangeantVisibility pVisibility)
 Set tangent visibility mode.
kFCurveTangeantVisibility GetTangeantVisibility ()
 Return tangent visibility mode.
void SetBreak (bool pVal)
 Set/Unset Break tangent Only valid for User and Auto keys.
bool GetBreak ()
 Get if tangent is break Only valid for User and Auto keys.


Member Function Documentation

void Set ( 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 
) [inline]

Set a key.

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

Parameters:
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.

void SetTCB ( KTime  pTime,
kFCurveDouble  pValue,
float  pData0 = 0.0f,
float  pData1 = 0.0f,
float  pData2 = 0.0f 
) [inline]

Set a key with cubic interpolation, TCB tangent mode.

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

void Set ( KFCurveKey pSource  )  [inline]

Key assignment.

Parameters:
pSource Source key to be copied.

kFCurveInterpolation GetInterpolation (  )  [inline]

Get key interpolation type.

Interpolation types are: KFCURVE_INTERPOLATION_CONSTANT, KFCURVE_INTERPOLATION_LINEAR, KFCURVE_INTERPOLATION_CUBIC

void SetInterpolation ( kFCurveInterpolation  pInterpolation  )  [inline]

Set key interpolation type.

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

kFCurveConstantMode GetConstantMode (  )  [inline]

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

Returns:
Key constant mode.

kFCurveTangeantMode GetTangeantMode ( bool  pIncludeOverrides = false  )  [inline]

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

Returns:
Key tangent mode.

kFCurveTangeantWeightMode GetTangeantWeightMode (  )  [inline]

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

kFCurveTangeantVelocityMode GetTangeantVelocityMode (  )  [inline]

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

void SetConstantMode ( kFCurveConstantMode  pMode  )  [inline]

Set key constant mode.

Warning: This method is meaningful for constant interpolation only.

Parameters:
pMode Key consant mode. Constant modes are: KFCURVE_CONSTANT_STANDARD KFCURVE_CONSTANT_NEXT

void SetTangeantMode ( kFCurveTangeantMode  pTangent  )  [inline]

Set key tangent mode.

Warning: This method is meaningful for cubic interpolation only.

Parameters:
pTangent Key tangent mode. Tangent modes are: KFCURVE_TANGEANT_AUTO, KFCURVE_TANGEANT_AUTO_BREAK KFCURVE_TANGEANT_TCB, KFCURVE_TANGEANT_USER, KFCURVE_TANGEANT_BREAK

void SetTangeantWeightMode ( kFCurveTangeantWeightMode  pTangentWeightMode,
kFCurveTangeantWeightMode  pMask = KFCURVE_WEIGHTED_ALL 
) [inline]

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

Warning: This method is meaningful for cubic interpolation only.

Parameters:
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

void SetTangeantVelocityMode ( kFCurveTangeantVelocityMode  pTangentVelocityMode,
kFCurveTangeantVelocityMode  pMask = KFCURVE_VELOCITY_ALL 
) [inline]

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

Warning: This method is meaningful for cubic interpolation only.

Parameters:
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

kFCurveDouble GetDataDouble ( EKFCurveDataIndex  pIndex  )  [inline]

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:
pIndex Data index, either KFCURVEKEY_RIGHT_SLOPE, KFCURVEKEY_NEXT_LEFT_SLOPE. KFCURVEKEY_NEXT_RIGHT_WEIGHT. KFCURVEKEY_NEXT_LEFT_WEIGHT

void SetDataDouble ( EKFCurveDataIndex  pIndex,
kFCurveDouble  pValue 
) [inline]

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 unpredictable curve behavior for this key. Use KFCurve::SetDataFloat() instead.

Parameters:
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).

float GetDataFloat ( EKFCurveDataIndex  pIndex  )  [inline]

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:
pIndex Data index, either KFCURVEKEY_TCB_TENSION, KFCURVEKEY_TCB_CONTINUITY or KFCURVEKEY_TCB_BIAS.

void SetDataFloat ( EKFCurveDataIndex  pIndex,
float  pValue 
) [inline]

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:
pIndex Data index, either KFCURVEKEY_TCB_TENSION, KFCURVEKEY_TCB_CONTINUITY or KFCURVEKEY_TCB_BIAS.
pValue The data value to set.

float* GetDataPtr (  )  [inline]

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

kFCurveDouble GetValue (  )  [inline]

Get key value.

void SetValue ( kFCurveDouble  pValue  )  [inline]

Set key value.

void IncValue ( kFCurveDouble  pValue  )  [inline]

Increment key value.

Parameters:
pValue Value by which key value is incremented.

void MultValue ( kFCurveDouble  pValue  )  [inline]

Multiply key value.

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

void MultTangeant ( kFCurveDouble  pValue  )  [inline]

Multiply key tangents.

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

Parameters:
pValue Value by which key tangents are multiplied.

KTime GetTime (  )  [inline]

Get key time.

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

void SetTime ( KTime  pTime  )  [inline]

Set key time.

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

void IncTime ( KTime  pTime  )  [inline]

Increment key time.

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

void SetSelected ( bool  pSelected  )  [inline]

Set if key is currently selected.

Parameters:
pSelected Selection flag.

bool GetSelected (  )  [inline]

Return if key is currently selected.

Returns:
Selection flag.

void SetMarkedForManipulation ( bool  pMark  )  [inline]

Set if key is currently marked for manipulation.

Parameters:
pMark Mark flag.

bool GetMarkedForManipulation (  )  [inline]

Return if key is currently marked for manipulation.

Returns:
Mark flag.

void SetTangeantVisibility ( kFCurveTangeantVisibility  pVisibility  )  [inline]

Set tangent visibility mode.

Warning: This method is meaningful for cubic interpolation only.

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

kFCurveTangeantVisibility GetTangeantVisibility (  )  [inline]

Return tangent visibility mode.

Warning: This method is meaningful for cubic interpolation only.

Returns:
Tangent visibility mode. Tangent visibility modes are: KFCURVE_TANGEANT_SHOW_NONE KFCURVE_TANGEANT_SHOW_LEFT KFCURVE_TANGEANT_SHOW_RIGHT

void SetBreak ( bool  pVal  )  [inline]

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

bool GetBreak (  )  [inline]

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