00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #include <fbxfilesdk/fbxfilesdk_def.h>
00042
00043 #include <fbxfilesdk/kfbxplugins/kfbxobject.h>
00044
00045 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00046
00052 class KFBX_DLL KFbxAnimCurveKeyBase
00053 {
00054 public:
00057 KTime mTime;
00058
00061 KFbxAnimCurveKeyBase()
00062 {
00063 mTime = KTIME_ZERO;
00064 }
00065
00068 virtual ~KFbxAnimCurveKeyBase() {};
00069
00073 virtual KTime GetTime() const
00074 {
00075 return mTime;
00076 }
00077
00081 virtual void SetTime(const KTime& pTime) {
00082 mTime = pTime;
00083 }
00084 };
00085
00093 class KFBX_DLL KFbxAnimCurveBase : public KFbxObject
00094 {
00095 KFBXOBJECT_DECLARE_ABSTRACT(KFbxAnimCurveBase, KFbxObject);
00096
00097 public:
00103
00104 virtual void KeyClear () = 0;
00105
00107 virtual int KeyGetCount () const = 0;
00108
00118 virtual int KeyAdd (KTime pTime, KFbxAnimCurveKeyBase& pKey, int* pLast = NULL) = 0;
00119
00128 virtual bool KeySet(int pIndex, KFbxAnimCurveKeyBase& pKey) = 0;
00129
00134 virtual bool KeyRemove(int pIndex) = 0;
00136
00145 virtual KTime KeyGetTime(int pKeyIndex) const { return KTIME_INFINITE; }
00146
00151 virtual void KeySetTime(int pKeyIndex, KTime pTime) = 0;
00152
00154
00166 typedef enum {
00167 eCONSTANT = 1,
00168 eREPETITION = 2,
00169 eMIRROR_REPETITION = 3,
00170 eKEEP_SLOPE = 4
00171 } EExtrapolationType;
00172
00176 void SetPreExtrapolation(EExtrapolationType pExtrapolation) { mPreExtrapolation = pExtrapolation; }
00177
00181 EExtrapolationType GetPreExtrapolation() const { return mPreExtrapolation; }
00182
00187 void SetPreExtrapolationCount(unsigned long pCount) { mPreExtrapolationCount = pCount; }
00188
00193 unsigned long GetPreExtrapolationCount() const { return mPreExtrapolationCount; }
00194
00198 void SetPostExtrapolation(EExtrapolationType pExtrapolation) { mPostExtrapolation = pExtrapolation; }
00199
00203 EExtrapolationType GetPostExtrapolation() const { return mPostExtrapolation; }
00204
00209 void SetPostExtrapolationCount(unsigned long pCount) { mPostExtrapolationCount = pCount; }
00210
00215 unsigned long GetPostExtrapolationCount() const { return mPostExtrapolationCount; }
00217
00230 virtual float Evaluate (KTime pTime, int* pLast = NULL) = 0;
00231
00238 virtual float EvaluateIndex( double pIndex) = 0;
00240
00252 virtual bool GetTimeInterval(KTime& pStart, KTime& pStop);
00254
00255 protected:
00256 KFbxAnimCurveBase(KFbxSdkManager& pManager, char const* pName);
00257
00258 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00260 // WARNING!
00261
00262
00264 public:
00265 virtual bool Store(KFbx* pFileObject) = 0;
00266 virtual bool Retrieve(KFbx* pFileObject) = 0;
00267
00268 private:
00269 EExtrapolationType mPreExtrapolation;
00270 unsigned long mPreExtrapolationCount;
00271 EExtrapolationType mPostExtrapolation;
00272 unsigned long mPostExtrapolationCount;
00273
00274 friend class KFbxObject;
00275 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00276 };
00277
00278 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00279
00280 #endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H