00001 
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXCONSTRAINT_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXCONSTRAINT_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 #include <fbxfilesdk/kfbxplugins/kfbxgroupname.h>
00045 
00046 #include <fbxfilesdk/components/kbaselib/klib/kerror.h>
00047 #include <fbxfilesdk/components/kbaselib/klib/kstringlist.h>
00048 
00049 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00050 
00051 class KFbxSdkManager;
00052 class KFbxVector4;
00053 
00060 class KFBX_DLL KFbxConstraint : public KFbxObject
00061 {
00062     KFBXOBJECT_DECLARE(KFbxConstraint,KFbxObject);
00063 
00064 public:
00073         KFbxTypedProperty<fbxDouble1> Weight;
00074 
00080         KFbxTypedProperty<fbxBool1> Active;
00081 
00088         KFbxTypedProperty<fbxBool1> Lock;
00090 
00103     typedef enum
00104     {
00105         eUNIDENTIFIED,
00106         ePOSITION,
00107         eROTATION,
00108         eSCALE,
00109         ePARENT,
00110         eSINGLECHAIN_IK,
00111         eAIM,
00112         eCHARACTER_CONSTRAINT,
00113         eCUSTOM,
00114         eCONSTRAINT_COUNT
00115     } EConstraintType;
00116 
00120     virtual EConstraintType GetConstraintType() const { return eUNIDENTIFIED; }
00121 
00125     virtual KFbxObject* GetConstrainedObject() const { return NULL; }
00126 
00130     virtual int GetConstraintSourceCount() const { return 0; }
00131 
00136     virtual KFbxObject* GetConstraintSource(int pIndex) const { return NULL; }
00137 
00141     virtual void SetOffset(KFbxVector4 pOffset);
00142 
00147     double GetSourceWeight(const KFbxObject* pObject) const;
00148 
00151     K_DEPRECATED void SetActive(bool pActive);
00152 
00155     K_DEPRECATED bool GetActive() const;
00156 
00161 
00165         KError& GetError();
00166 
00171         typedef enum
00172         {
00173             eERROR,
00174             eERROR_COUNT
00175         } EError;
00176 
00180         EError GetLastErrorID() const;
00181 
00185         const char* GetLastErrorString() const;
00186 
00188 
00190 
00191 
00192 
00193 
00194 
00195 
00197 
00198 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00199 
00200 protected:
00201     KFbxConstraint(KFbxSdkManager& pManager, char const* pName);
00202     virtual bool ConstructProperties(bool pForceSet);
00203 
00204 public:
00205     virtual KString GetTypeName() const;
00206 
00207 private:
00208     KError mError;
00209 
00210 protected:
00211 
00212     friend class KFbxScene;
00213 
00214 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00215 };
00216 
00217 
00219 
00220 
00221 
00222 
00223 
00224 
00226 
00227 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00228 
00229 const KString GetWeightPropertyName(const KFbxObject * pObject);
00230 void CreateWeightPropertyForSourceObject(KFbxObject * pConstraint,
00231                                          const KFbxObject * pSourceObject, double pWeightValue);
00232 
00233 typedef KFbxConstraint* HKFbxConstraint;
00234 
00235 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00236 
00237 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00238 
00239 #endif // FBXFILESDK_KFBXPLUGINS_KFBXCONSTRAINT_H
00240