fbsdk/fbdata.h Source File
 
 
 
fbsdk/fbdata.h
Go to the documentation of this file.
00001 #ifndef __FBDATA_H__
00002 #define __FBDATA_H__
00003 /**************************************************************************
00004  Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
00005  All Rights Reserved.
00006  
00007  The coded instructions, statements, computer programs, and/or related 
00008  material (collectively the "Data") in these files contain unpublished 
00009  information proprietary to Autodesk, Inc. and/or its licensors, which is 
00010  protected by Canada and United States of America federal copyright law 
00011  and by international treaties.
00012  
00013  The Data may not be disclosed or distributed to third parties, in whole 
00014  or in part, without the prior written consent of Autodesk, Inc. 
00015  ("Autodesk").
00016  
00017  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00018  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 
00019  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR 
00020  ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES 
00021  OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 
00022  PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT 
00023  WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR 
00024  FREE.
00025  
00026  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 
00027  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR 
00028  EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE 
00029  DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS 
00030  OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR 
00031  DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF 
00032  LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT 
00033  LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE 
00034  DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS 
00035  BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
00036  
00037 **************************************************************************/
00038 
00045 #include <kaydaradef.h>
00046 #ifndef FBSDK_DLL
00047 
00050         #define FBSDK_DLL K_DLLIMPORT
00051 #endif
00052 
00053 #include <fbsdk/fbcomponent.h>
00054 
00056 
00057 // Basic types
00058 #define ANIMATIONNODE_TYPE_NUMBER               "Number"
00059 #define ANIMATIONNODE_TYPE_TIME                 "Time"
00060 #define ANIMATIONNODE_TYPE_TIMECODE             "TimeCode"
00061 #define ANIMATIONNODE_TYPE_VECTOR               "Vector"
00062 #define ANIMATIONNODE_TYPE_VECTOR_4             "Vector4"
00063 #define ANIMATIONNODE_TYPE_OBJECT               "Object"
00064 #define ANIMATIONNODE_TYPE_REFERENCE            "Reference"
00065 #define ANIMATIONNODE_TYPE_EVENT                                "Event"
00066 #define ANIMATIONNODE_TYPE_STRING                               "String"
00067 
00068 // Types which are numbers
00069 #define ANIMATIONNODE_TYPE_ACTION               "Action"
00070 #define ANIMATIONNODE_TYPE_BOOL                 "Bool"
00071 #define ANIMATIONNODE_TYPE_ENUM                 "Enum"
00072 #define ANIMATIONNODE_TYPE_INTEGER              "Integer"
00073 #define ANIMATIONNODE_TYPE_OCCLUSION            "Occlusion"
00074 #define ANIMATIONNODE_TYPE_FIELDOFVIEWX         "FieldOfViewX"
00075 #define ANIMATIONNODE_TYPE_FIELDOFVIEWY         "FieldOfViewY"
00076 #define ANIMATIONNODE_TYPE_OPTICALCENTERX       "OpticalCenterX"
00077 #define ANIMATIONNODE_TYPE_OPTICALCENTERY       "OpticalCenterY"
00078 #define ANIMATIONNODE_TYPE_IKREACHTRANSLATION   "IK Reach Translation"
00079 #define ANIMATIONNODE_TYPE_IKREACHROTATION              "IK Reach Rotation"
00080 
00081 // Types which are vectors (3 members)
00082 #define ANIMATIONNODE_TYPE_COLOR                "Color"
00083 #define ANIMATIONNODE_TYPE_LOCAL_TRANSLATION    "Lcl Translation"
00084 #define ANIMATIONNODE_TYPE_LOCAL_ROTATION       "Lcl Rotation"
00085 #define ANIMATIONNODE_TYPE_LOCAL_SCALING        "Lcl Scaling"
00086 #define ANIMATIONNODE_TYPE_TRANSLATION          "Translation"
00087 #define ANIMATIONNODE_TYPE_ROTATION             "Rotation"
00088 #define ANIMATIONNODE_TYPE_SCALING              "Scaling"
00089 
00090 // Types which are vectors (4 members)
00091 #define ANIMATIONNODE_TYPE_COLOR_RGBA           "ColorAndAlpha"
00092 
00094 
00095 class KFCurve;
00096 
00097 #ifdef FBSDKUseNamespace
00098         namespace FBSDKNamespace {
00099 #endif
00100 
00101 FB_FORWARD( FBEvaluateInfo );
00102 FB_FORWARD( FBPlotOptions );
00103                 
00105 enum FBInterpolation    {       
00106         kFBInterpolationInvalid  = -1,  
00107         kFBInterpolationConstant = 0,   
00108         kFBInterpolationLinear,                 
00109         kFBInterpolationCubic,                  
00110         kFBInterpolationCount                   
00111 };
00112 FB_DEFINE_ENUM( FBSDK_DLL, Interpolation ); 
00113 
00115 enum FBInterpolatorCurveType {
00116         kFBInterpolatorCurveLinearIn, 
00117         kFBInterpolatorCurveLinearOut, 
00118         kFBInterpolatorCurveSmoothIn, 
00119         kFBInterpolatorCurveSmoothOut, 
00120         kFBInterpolatorCurveSlowIn, 
00121         kFBInterpolatorCurveSlowOut, 
00122         kFBInterpolatorCurveFastIn, 
00123         kFBInterpolatorCurveFastOut, 
00124         kFBInterpolatorCurveLast 
00125 };
00126 
00130 enum FBTangentMode      {
00131         kFBTangentModeAuto,                     
00132         kFBTangentModeTCB,                      
00133         kFBTangentModeUser,                     
00134         kFBTangentModeBreak,                
00135     kFBTangentModeTimeIndependent,  
00136     kFBTangentModeClampProgressive  
00137 };
00138 FB_DEFINE_ENUM( FBSDK_DLL, TangentMode );
00139 
00143 enum FBTangentClampMode {
00144         kFBTangentClampModeNone,        
00145         kFBTangentClampModeClamped      
00146         //Add other clamping methods here...
00147 };
00148 FB_DEFINE_ENUM( FBSDK_DLL, TangentClampMode );
00149 
00153 enum FBTangentConstantMode {
00154         kFBTangentConstantModeNormal,   
00155         kFBTangentConstantModeNext              
00156 };
00157 FB_DEFINE_ENUM( FBSDK_DLL, TangentConstantMode );
00158  
00160 // FBFCurveKey
00162 FB_FORWARD( FBFCurve );
00163 __FB_FORWARD( FBFCurveKey );
00164 FB_FORWARD( FBPropertyListFCurveKey );
00165 
00167 class FBSDK_DLL FBFCurveKey
00168 {
00169 private:
00170         DataFBFCurveKey* mLocalPtr;
00171         void FBFCurveKeyInitProperties();
00173         void PropertyAdd( FBProperty* ) {};
00174 public:
00179         FBFCurveKey( ::KFCurve* pFCurve=NULL, int pKeyIndex=1 );
00180 
00184         FBFCurveKey( const FBFCurveKey &pFCurveKey );
00185 
00188         ~FBFCurveKey();
00189 
00195         bool operator==(const FBFCurveKey &pValue) const;
00196 
00197     // To convert the derivative values to degrees (as shown in Exact mode):
00198     //    degrees( atan( RightDerivative ))
00199     //    -1 * degrees( atan( LeftDerivative )) 
00200     //
00201     // To convert from the exact degree in Exact mode in the GUI to the corresponding
00202     // derivative:
00203     //    tan( radians( RightDerivative ))
00204     //    tan( radians( -1 * LeftDerivative ))
00205         FBPropertyFloat Value;                          
00206         FBPropertyFloat LeftDerivative;         
00207         FBPropertyFloat RightDerivative;        
00208         FBPropertyFloat LeftTangentWeight;      
00209         FBPropertyFloat RightTangentWeight;     
00210         FBPropertyFloat LeftBezierTangent;      
00211         FBPropertyFloat RightBezierTangent;     
00212 
00213         // TCB
00214         FBPropertyFloat Tension;                        
00215         FBPropertyFloat Continuity;                     
00216         FBPropertyFloat Bias;                           
00217         
00218         FBPropertyTime                  Time;                   
00219         FBPropertyInterpolation Interpolation;  
00220         FBPropertyTangentMode   TangentMode;    
00221         FBPropertyTangentClampMode              TangentClampMode;       
00222         FBPropertyBool                  TangentBreak;   
00223         FBPropertyTangentConstantMode   TangentConstantMode;            
00224         
00225         friend class FBFCurve;
00226         friend class FBPropertyListFCurveKey;
00227 };
00228 
00230 // FBPropertyListFCurveKey
00232 FB_FORWARD( FBFCurveKey );
00233  
00235 class FBSDK_DLL FBPropertyListFCurveKey : public FBPropertyBaseList< FBFCurveKey >
00236 {
00237 private:
00243         virtual int      Add    ( FBFCurveKey pItem );
00244 
00250     virtual int  Remove ( FBFCurveKey pItem );
00251 
00252 public:
00253 
00257     virtual void RemoveAt( int pIndex );
00258 
00263         virtual FBFCurveKey operator[](int pIndex);
00264 
00268         virtual int  GetCount();
00269 };
00270 
00272 // FBFCurve
00274 __FB_FORWARD( FBFCurve);
00275 
00277 class FBSDK_DLL FBFCurve : public FBComponent {
00278         __FBClassDeclare( FBFCurve,FBComponent );
00279 public:
00283         FBFCurve(HIObject pObject=NULL);
00284 
00287         virtual void FBDelete() override;
00288 
00293         float   Evaluate(FBTime &pTime);
00294 
00298         void    EditBegin(int pKeyCount=-1);
00299 
00303         void    EditEnd(int pKeyCount=-1);
00304 
00306         void    EditClear();
00307 
00317     int KeyAdd( FBTime &pTime, double pValue, FBInterpolation pInterpolation=kFBInterpolationCubic, FBTangentMode pTangentMode=kFBTangentModeAuto );
00318 
00323     bool KeyRemove( int pIndex );
00324 
00334         bool KeyDelete(int pStartIndex , int pStopIndex);       
00335 
00343         bool KeyDelete(FBTime pStart = FBTime::MinusInfinity, FBTime pStop = FBTime::Infinity, bool pInclusive = false);
00344 
00350         void KeyInsert( FBTime &pTime, FBInterpolation pInterpolation = kFBInterpolationCubic, FBTangentMode pTangentMode = kFBTangentModeAuto );
00351 
00359     void KeyReplaceBy( FBFCurve& pSource, FBTime pStart = FBTime::MinusInfinity, FBTime pStop = FBTime::Infinity, bool pUseExactGivenSpan = false, bool pKeyStartEndOnNoKey = true );
00360 
00369         K_DEPRECATED_2014 void Replace( FBFCurve& pSource, FBTime pStart = FBTime::MinusInfinity, FBTime pStop = FBTime::Infinity, bool pUseExactGivenSpan = false, bool pKeyStartEndOnNoKey = true );
00370 
00374         static FBFCurve* CreateInterpolatorCurve( FBInterpolatorCurveType pCurveType );
00375 
00376         FBPropertyListFCurveKey Keys;           
00377 };
00378 
00379 FB_DEFINE_COMPONENT( FBSDK_DLL, FCurve );
00380 
00382 // FBPropertyListAnimationNode
00384 __FB_FORWARD( FBAnimationNode);
00385 __FB_FORWARD( FBPropertyListAnimationNode);
00386 FB_DEFINE_LIST( FBSDK_DLL, AnimationNode );
00387 
00389 class FBSDK_DLL FBPropertyListAnimationNode : public FBPropertyBaseList< FBAnimationNode* >
00390 {
00391 public:
00396         virtual int      Add    ( FBAnimationNode* pItem );
00401     virtual int  Remove ( FBAnimationNode* pItem );
00405     virtual void RemoveAt( int pIndex );
00410         virtual FBAnimationNode* operator[](int pIndex);
00414         virtual int  GetCount();
00420         FBAnimationNode* Find( FBBox *pOriginalOwner, const char* pDataType );
00425         FBAnimationNode* Find( const char* pNodeName );
00430         FBAnimationNode* FindByLabel( const char* pNodeLabel );
00431 };
00432 
00434 // FBEventAnimationNode
00437 
00439 enum FBEventAnimationNodeType {
00440         kFBEventAnimationNodeDataChange,
00441         kFBEventAnimationNodeConstraintChange,
00442         kFBEventAnimationNodeNone
00443 };
00444 
00445 FB_DEFINE_ENUM( FBSDK_DLL, EventAnimationNodeType );
00446 
00447 __FB_FORWARD( FBEventAnimationNode );
00448 
00455 class FBSDK_DLL FBEventAnimationNode: public FBEvent
00456 {
00457 public:
00461         FBEventAnimationNode( HKEventBase pEvent );             
00462 
00463         FBPropertyEventAnimationNodeType                Type;   
00464 };
00465 
00467 // FBPropertyEventAnimationNode
00470 class FBSDK_DLL FBPropertyEventAnimationNode : public FBPropertyEvent
00471 {
00472   public:
00477         virtual void Add        ( HICallback pOwner, kICallbackHandler pHandler );
00478         virtual void Remove     ( HICallback pOwner, kICallbackHandler pHandler );
00479 };
00487 typedef bool (* kFBDataHandler )(void* pBuffer,FBEvaluateInfo* pEvaluateInfo,FBAnimationNode* pAnimationNode,void* p1,void* p2);
00488 
00490 // FBAnimationNode
00493 FB_DEFINE_COMPONENT( FBSDK_DLL, AnimationNode );
00494 
00495 class FBSDK_DLL FBAnimationNode : public FBComponent
00496 {
00497         __FBClassDeclare( FBAnimationNode,FBComponent );
00498 public:
00503         FBAnimationNode(const char *pName = NULL, HIObject pObject=NULL);
00504 
00511         void KeyAdd( const FBTime &pTime, double *pData, FBInterpolation pInterpolation=kFBInterpolationCubic, FBTangentMode pTangentMode=kFBTangentModeAuto );
00512 
00518         void KeyAdd( double *pData, FBInterpolation pInterpolation=kFBInterpolationCubic, FBTangentMode pTangentMode=kFBTangentModeAuto );
00519 
00523     bool SetCandidate( double* Data );
00524 
00528     void SetBufferType( bool pGlobal );
00529 
00533         void KeyCandidate( FBTime pTime = FBTime::Infinity );
00534 
00537         int GetSizeOfData();
00538 
00542         int GetDataDoubleArrayCount();
00543 
00549     bool WriteData( double* Data,FBEvaluateInfo* pEvaluateInfo );
00550 
00556         bool WriteGlobalData( double* Data,FBEvaluateInfo* pEvaluateInfo );
00557 
00563     bool ReadData( double* Data,FBEvaluateInfo* pEvaluateInfo );
00564 
00575         bool ReadData( double *Data, FBTime pTime );
00576 
00584     bool ReadData( double* Data );
00585 
00592         bool Evaluate( double* Data, FBTime pTime, bool pEvaluateCandidate = true );
00593 
00595         bool IsEvaluationRecursive( FBEvaluateInfo* pEvaluateInfo );
00596 
00604         void DisableIfNotWritten( FBEvaluateInfo* pEvaluateInfo );
00605 
00609     bool IsKey();
00610 
00613     void KeyRemove();
00614 
00618     void KeyRemoveAt( FBTime pTime );
00619 
00623         FBAnimationNode* GetAnimationToRecord();
00624 
00628         FBAnimationNode* GetAnimationToPlay();
00629 
00633         FBTime ConvertGlobalToNodeTime(FBTime& pKeyTime);
00634         
00638         FBTime ConvertNodeToGlobalTime(FBTime& pKeyTime);
00639 
00640         FBPropertyString                        Label;                  
00641         FBPropertyString                        UserName;               
00642         FBPropertykReference            Reference;              
00643         FBPropertyInt                           KeyCount;               
00644         FBPropertyFCurve                        FCurve;                 
00645         FBPropertyBool                          Live;                   
00646         FBPropertyBool                          RecordMode;             
00647         FBPropertyAnimationNode         Parent;                 
00648         FBPropertyInterpolation         DefaultInterpolation;   
00649 
00650         FBPropertyListAnimationNode     Nodes;                  
00651 
00652         FBPropertyEventAnimationNode    OnChange;               
00653 
00654         friend class FBBox;
00655 };
00656 
00658 // FBAnimationLayer
00660 
00664 enum FBLayerMode        {
00665         kFBLayerModeInvalidIndex = -1,  
00666         kFBLayerModeAdditive = 0,               
00667         kFBLayerModeOverride,                   
00668         kFBLayerModeOverridePassthrough 
00669 };
00670 FB_DEFINE_ENUM( FBSDK_DLL, LayerMode );
00671 
00675 enum FBLayerRotationMode        {
00676         kFBLayerRotationModeInvalidIndex = -1,          
00677         kFBLayerRotationModeEulerRotation = 0,  
00678         kFBLayerRotationModeQuaternionRotation  
00679 };
00680 FB_DEFINE_ENUM( FBSDK_DLL, LayerRotationMode );
00681 
00682 
00683 __FB_FORWARD( FBAnimationLayer );
00684 
00692 class FBSDK_DLL FBAnimationLayer : public FBComponent
00693 {
00694         //--- Open Reality declaration.
00695         __FBClassDeclare(FBAnimationLayer, FBComponent);
00696 public:
00697 
00703         FBAnimationLayer(const char *pName, int pLayerID, HIObject pObject=NULL);
00704 
00707         virtual void FBDelete();
00708 
00709         FBPropertyBool                          Solo;                           
00710         FBPropertyBool                          Mute;                           
00711         FBPropertyBool                          Lock;                           
00712         FBPropertyAnimatableDouble      Weight;                         
00713         FBPropertyLayerMode                     LayerMode;                      
00714         FBPropertyLayerRotationMode     LayerRotationMode;      
00715 
00719         void    AddChildLayer( FBAnimationLayer* pAnimationLayer );
00720 
00725         FBAnimationLayer*       GetChildLayer( int pIndex );
00726 
00730         int             GetChildCount();
00731 
00738         void    GetCompleteChildHierarchy(FBArrayTemplate<FBAnimationLayer*>* pChildArray);
00739 
00743         void SetParentLayer(FBAnimationLayer* pParentLayer);
00744 
00748         FBAnimationLayer*       GetParentLayer();
00749 
00753         int     GetLayerIndex();
00754 
00759         void SelectLayer(bool pValue, bool pExclusiveSelect);
00760 
00764         bool IsSelected();
00765 };
00766 
00767 
00768 __FB_FORWARD( FBTake);
00770 // FBPropertyListTake
00772 
00775 class FBSDK_DLL FBPropertyListTake : public FBPropertyListComponent
00776 {
00777 public:
00778         FBPropertyListTake();
00783         FBTake* operator[](int pIndex);
00784 
00789         virtual int Add( FBComponent* pItem ) override;
00790         
00794     virtual void RemoveAt( int pIndex ) override;
00795 };
00796 
00798 enum FBAnimationLayerMergeOptions       {       
00799         kFBAnimLayerMerge_SelectedLayers_SelectedProperties,
00800         kFBAnimLayerMerge_AllLayers_SelectedProperties,         
00801         kFBAnimLayerMerge_SelectedLayers_AllProperties,         
00802         kFBAnimLayerMerge_AllLayers_AllProperties,                      
00803         kFBAnimLayerMerge_SelectedLayers_CompleteScene,         
00804         kFBAnimLayerMerge_AllLayers_CompleteScene,                      
00805 };
00806 
00808 K_DEPRECATED_2014 static const FBAnimationLayerMergeOptions kFBAnimLayerMerge_SelectedLayer_CompleteScene = kFBAnimLayerMerge_SelectedLayers_CompleteScene; 
00809 
00811 enum FBMergeLayerMode   {       
00812         kFBMergeLayerModeAutomatic,     
00813         kFBMergeLayerModeAdditive,      
00814         kFBMergeLayerModeOverride,      
00815 };
00816 
00818 // FBTake
00820 
00862 class FBSDK_DLL FBTake : public FBComponent {
00863         __FBClassDeclare( FBTake,FBComponent );
00864 public:
00869         FBTake(const char* pName, HIObject pObject=NULL);
00870 
00875         virtual void FBDelete();
00876 
00885         FBTake* CopyTake( const char *pNewTakeName );
00886 
00889     void CreateNewLayer();    
00890 
00894     void RemoveLayer(int pLayerIndex);  
00895 
00900     FBAnimationLayer* GetLayer(int pLayerIndex);  
00901 
00906     FBAnimationLayer* GetLayerByName(const char* pName);  
00907 
00911     void SetCurrentLayer(int pLayerIndex);
00912 
00916     int GetCurrentLayer();
00917 
00921     int GetLayerCount();
00922 
00926     bool MoveCurrentLayerUp();
00927 
00931     bool MoveCurrentLayerDown();
00932 
00935     void DuplicateSelectedLayers();
00936 
00943         void MergeLayers(FBAnimationLayerMergeOptions pMergeOptions, bool pDeleteMergedLayers, FBMergeLayerMode pMergeMode, bool pMergeLockedProperties = false);
00944 
00949         void PlotTakeOnSelected(FBPlotOptions* pPlotOptions);
00950 
00955         void PlotTakeOnSelectedProperties(FBPlotOptions* pPlotOptions);
00956 
00961         void PlotTakeOnSelected(FBTime pPlotPeriod);
00962 
00967         void PlotAllTakesOnSelected(FBTime pPlotPeriod);
00968 
00973         void PlotTakeOnSelectedProperties(FBTime pPlotPeriod);
00974 
00979         void PlotAllTakesOnSelectedProperties(FBTime pPlotPeriod);
00980 
00985         void ClearAllProperties(bool pOnSelectedObjectsOnly, bool pOnLockedProperties = false);
00986 
00989         void ClearAllPropertiesOnCurrentLayer();
00990 
00991         FBPropertyTimeSpan      ReferenceTimeSpan;              
00992         FBPropertyTimeSpan      LocalTimeSpan;                  
00993         FBPropertyString        Comments;                               
00994 };
00995 
00996 FB_DEFINE_COMPONENT( FBSDK_DLL, Take );
00997 
00999 // FBTimeWarpManager
01001 __FB_FORWARD( FBTimeWarpManager );
01002 
01006 class FBSDK_DLL FBTimeWarpManager : public FBComponent
01007 {
01008     __FBClassDeclare(FBTimeWarpManager, FBComponent);
01009 
01010 public:
01011     typedef void (*TimeWarpChangeCallback)(void* pObject);
01012 
01016     FBTimeWarpManager();
01017 
01018 
01021     void TimeWarpTakeChange();
01022 
01026     void TimeWarpClearTake(FBTake* pTake);
01027 
01031     void TimeWarpInitTake(FBTake* pTake);
01032 
01037     void TimeWarpCopyTake(FBTake* pDstTake, FBTake* pSrcTake );
01038 
01039 
01045     void TimeWarpAddToTake(FBTake* pTake, FBAnimationNode* pTimeWarp, int pNickNumber=0);
01046 
01051     void DestroyTimeWarpFromTake(FBTake* pTake, FBAnimationNode* pTimeWarp);
01052         
01056     void RemoveTimeWarpFromScene(FBAnimationNode* pTimeWarp);
01057 
01058 
01063     kLong GetTimeWarpCount(FBTake* pTake);
01064         
01070     FBAnimationNode* GetTimeWarpAtIndex(FBTake* pTake, kLong pIndex);
01071 
01072 
01078     int GetTimeWarpNickNumber(FBTake* pTake, FBAnimationNode* pTimeWarp);
01079 
01086     bool SetTimeWarpNickNumber(FBTake* pTake, FBAnimationNode* pTimeWarp, int pNumber);
01087         
01093     int GetTimeWarpNickNumberAtIndex(FBTake* pTake, kLong pIndex);
01094 
01100     FBAnimationNode* GetTimeWarpFromNickNumber(FBTake* pTake, int pNumber);
01101         
01106     int FindTimeWarpNickNumberGlobal(FBAnimationNode* pTimeWarp);
01107 
01108 
01115     bool ApplyTimeWarp(FBTake* pTake, FBProperty* pEvalProp, FBAnimationNode* pTimeWarp);
01116         
01121     void RemoveTimeWarp(FBTake* pTake, FBProperty* pEvalProp );
01122 
01123 
01128     void TimeWarpRegisterChangeEvent(TimeWarpChangeCallback pCallback, void* pObject);
01129         
01134     void TimeWarpUnregisterChangeEvent(TimeWarpChangeCallback pCallback, void* pObject);
01135 
01136 
01141     FBAnimationNode* TimeWarpCreateNew( const char* pName );
01142 
01143 
01149     void TimeWarpRename( FBTake* pTake, FBAnimationNode* pTimeWarp, const char* pNewName );
01150         
01157     void TimeWarpMergeCurveNode( FBTake* pTake,FBProperty* pEvalProp, FBAnimationNode*  pNode, FBAnimationNode*  pTimeWarpNode );
01158         
01162     static FBTimeWarpManager& TheOne();
01163 };
01164 
01165 #ifdef FBSDKUseNamespace
01166         }
01167 #endif
01168 
01169 #endif
01170