Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_
00014 #define _FBXSDK_SCENE_ANIMATION_CURVE_BASE_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/fbxobject.h>
00019
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021
00022 class FbxIO;
00023
00029 class FBXSDK_DLL FbxAnimCurveKeyBase
00030 {
00031 public:
00034 FbxTime mTime;
00035
00038 FbxAnimCurveKeyBase()
00039 {
00040 mTime = FBXSDK_TIME_ZERO;
00041 }
00042
00045 virtual ~FbxAnimCurveKeyBase() {};
00046
00050 virtual FbxTime GetTime() const
00051 {
00052 return mTime;
00053 }
00054
00058 virtual void SetTime(const FbxTime& pTime) {
00059 mTime = pTime;
00060 }
00061 };
00062
00070 class FBXSDK_DLL FbxAnimCurveBase : public FbxObject
00071 {
00072 FBXSDK_ABSTRACT_OBJECT_DECLARE(FbxAnimCurveBase, FbxObject);
00073
00074 public:
00080
00081 virtual void KeyClear () = 0;
00082
00084 virtual int KeyGetCount () const = 0;
00085
00095 virtual int KeyAdd (FbxTime pTime, FbxAnimCurveKeyBase& pKey, int* pLast = NULL) = 0;
00096
00105 virtual bool KeySet(int pIndex, FbxAnimCurveKeyBase& pKey) = 0;
00106
00111 virtual bool KeyRemove(int pIndex) = 0;
00112
00118 virtual bool KeyRemove(int pStartIndex, int pEndIndex) = 0;
00119
00121
00130 virtual FbxTime KeyGetTime(int ) const { return FBXSDK_TIME_INFINITE; }
00131
00136 virtual void KeySetTime(int pKeyIndex, FbxTime pTime) = 0;
00137
00139
00151 enum EExtrapolationType
00152 {
00153 eConstant = 1,
00154 eRepetition = 2,
00155 eMirrorRepetition = 3,
00156 eKeepSlope = 4
00157 } ;
00158
00162 void SetPreExtrapolation(EExtrapolationType pExtrapolation) { mPreExtrapolation = pExtrapolation; }
00163
00167 EExtrapolationType GetPreExtrapolation() const { return mPreExtrapolation; }
00168
00173 void SetPreExtrapolationCount(unsigned long pCount) { mPreExtrapolationCount = pCount; }
00174
00179 unsigned long GetPreExtrapolationCount() const { return mPreExtrapolationCount; }
00180
00184 void SetPostExtrapolation(EExtrapolationType pExtrapolation) { mPostExtrapolation = pExtrapolation; }
00185
00189 EExtrapolationType GetPostExtrapolation() const { return mPostExtrapolation; }
00190
00195 void SetPostExtrapolationCount(unsigned long pCount) { mPostExtrapolationCount = pCount; }
00196
00201 unsigned long GetPostExtrapolationCount() const { return mPostExtrapolationCount; }
00203
00216 virtual float Evaluate (FbxTime pTime, int* pLast = NULL) = 0;
00217
00224 virtual float EvaluateIndex( double pIndex) = 0;
00226
00237 virtual bool GetTimeInterval(FbxTimeSpan& pTimeInterval);
00239
00240
00241
00242
00243 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00244 virtual FbxObject& Copy(const FbxObject& pObject);
00245 virtual bool Store(FbxIO* pFileObject, bool pLegacyVersion=false) = 0;
00246 virtual bool Retrieve(FbxIO* pFileObject) = 0;
00247
00248 protected:
00249 virtual void Construct(const FbxAnimCurveBase* pFrom);
00250
00251 private:
00252 EExtrapolationType mPreExtrapolation;
00253 unsigned long mPreExtrapolationCount;
00254 EExtrapolationType mPostExtrapolation;
00255 unsigned long mPostExtrapolationCount;
00256 #endif
00257 };
00258
00259 #include <fbxsdk/fbxsdk_nsend.h>
00260
00261 #endif // FBXFILESDK_KFBXPLUGINS_KFBXANIMCURVEBASE_H