00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXNODELIMITS_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXNODELIMITS_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/kfbxmath/kfbxvector4.h>
00044
00045 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00046
00047 class KFbxNode;
00048 class KMBTransform;
00049
00053 typedef enum
00054 {
00055 eTRANSLATION,
00056 eROTATION,
00057 eSCALE,
00058 } ELimitedProperty;
00059
00073 class KFBX_DLL KFbxLimits
00074 {
00075 public:
00103 KFbxLimits(KMBTransform *pMBTransform = NULL);
00104
00106 virtual ~KFbxLimits();
00107
00108
00114 void SetLimitMinActive(const bool pXActive, const bool pYActive, const bool pZActive);
00115
00121 void GetLimitMinActive(bool& pXActive, bool& pYActive, bool& pZActive) const;
00122
00128 void SetLimitMaxActive(const bool pXActive, const bool pYActive, const bool pZActive);
00129
00135 void GetLimitMaxActive(bool& pXActive, bool& pYActive, bool& pZActive) const;
00136
00140 bool GetLimitSomethingActive() const;
00141
00145 void SetLimitMin(const KFbxVector4& pMin);
00146
00150 KFbxVector4 GetLimitMin() const;
00151
00155 void SetLimitMax(const KFbxVector4& pMax);
00156
00160 KFbxVector4 GetLimitMax() const;
00161
00165 inline void SetLimitedProperty(ELimitedProperty pProperty)
00166 {
00167 mProperty = pProperty;
00168 }
00169
00173 inline ELimitedProperty GetLimitedProperty() const
00174 {
00175 return mProperty;
00176 }
00177
00181 KFbxLimits& operator=(const KFbxLimits& pFbxLimit);
00182
00183
00184 private:
00185 bool mNeedsMBTransformDelete;
00186 KMBTransform* mMBTransform;
00187 ELimitedProperty mProperty;
00188 };
00189
00216 class KFBX_DLL KFbxNodeLimits
00217 {
00218
00219 public:
00225 KFbxNodeLimits(KFbxNode *pLimitedNode,KMBTransform *pMBTransform);
00226
00231 KFbxNode* GetLimitedNode();
00232
00237
00242 void SetTranslationLimitActive(bool pActive);
00243
00248 bool GetTranslationLimitActive() const;
00249
00251 KFbxLimits mTranslationLimits;
00252
00254
00259
00264 void SetRotationLimitActive(bool pActive);
00265
00270 bool GetRotationLimitActive()const;
00271
00273 KFbxLimits mRotationLimits;
00274
00276
00281
00286 void SetScalingLimitActive(bool pActive);
00287
00292 bool GetScalingLimitActive() const;
00293
00295 KFbxLimits mScalingLimits;
00296
00298
00299 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00300
00301 KFbxNodeLimits& operator=(KFbxNodeLimits const& pNodeLimits);
00302
00303 private:
00305 KFbxNode* mLimitedNode;
00306 KMBTransform * mMBTransform;
00307 friend class KFbxNode;
00308 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00309 };
00310
00311 typedef KFbxLimits* HKFbxLimits;
00312
00313 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00314
00315 #endif // FBXFILESDK_KFBXPLUGINS_KFBXNODELIMITS_H
00316