- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxcontrolset.h

Go to the documentation of this file.

    00001 /****************************************************************************************
    00002
    00003    Copyright (C) 2012 Autodesk, Inc.
    00004    All rights reserved.
    00005
    00006    Use of this software is subject to the terms of the Autodesk license agreement
    00007    provided at the time of installation or download, or which otherwise accompanies
    00008    this software in either electronic or hard copy form.
    00009
    00010 ****************************************************************************************/
    00011
    00013 #ifndef _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_
    00014 #define _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/scene/constraint/fbxcharacter.h>
    00019 #include <fbxsdk/core/math/fbxaffinematrix.h>
    00020 #include <fbxsdk/core/base/fbxstring.h>
    00021
    00022 #include <fbxsdk/fbxsdk_nsbegin.h>
    00023
    00024 class FbxNode;
    00025 class FbxManager;
    00026 class FbxControlSetPlug;
    00027
    00033 class FBXSDK_DLL FbxControlSetLink
    00034 {
    00035 public:
    00037     FbxControlSetLink();
    00038
    00042     FbxControlSetLink(const FbxControlSetLink& pControlSetLink);
    00043
    00047     FbxControlSetLink& operator=(const FbxControlSetLink& pControlSetLink);
    00048
    00053     void Reset();
    00054
    00056     FbxNode* mNode;
    00057
    00060     FbxString mTemplateName;
    00061 };
    00062
    00066 class FBXSDK_DLL FbxEffector
    00067 {
    00068 public:
    00069     enum ESetId
    00070     {
    00071         eDefaultSet,
    00072         eAux1Set,
    00073         eAux2Set,
    00074         eAux3Set,
    00075         eAux4Set,
    00076         eAux5Set,
    00077         eAux6Set,
    00078         eAux7Set,
    00079         eAux8Set,
    00080         eAux9Set,
    00081         eAux10Set,
    00082         eAux11Set,
    00083         eAux12Set,
    00084         eAux13Set,
    00085         eAux14Set,
    00086         eSetIdCount
    00087     };
    00088
    00089     enum ENodeId
    00090     {
    00091         eHips,
    00092         eLeftAnkle,
    00093         eRightAnkle,
    00094         eLeftWrist,
    00095         eRightWrist,
    00096         eLeftKnee,
    00097         eRightKnee,
    00098         eLeftElbow,
    00099         eRightElbow,
    00100         eChestOrigin,
    00101         eChestEnd,
    00102         eLeftFoot,
    00103         eRightFoot,
    00104         eLeftShoulder,
    00105         eRightShoulder,
    00106         eHead,
    00107         eLeftHip,
    00108         eRightHip,
    00109         eLeftHand,
    00110         eRightHand,
    00111         eLeftHandThumb,
    00112         eLeftHandIndex,
    00113         eLeftHandMiddle,
    00114         eLeftHandRing,
    00115         eLeftHandPinky,
    00116         eLeftHandExtraFinger,
    00117         eRightHandThumb,
    00118         eRightHandIndex,
    00119         eRightHandMiddle,
    00120         eRightHandRing,
    00121         eRightHandPinky,
    00122         eRightHandExtraFinger,
    00123         eLeftFootThumb,
    00124         eLeftFootIndex,
    00125         eLeftFootMiddle,
    00126         eLeftFootRing,
    00127         eLeftFootPinky,
    00128         eLeftFootExtraFinger,
    00129         eRightFootThumb,
    00130         eRightFootIndex,
    00131         eRightFootMiddle,
    00132         eRightFootRing,
    00133         eRightFootPinky,
    00134         eRightFootExtraFinger,
    00135         eNodeIdCount
    00136     };
    00137
    00139     FbxEffector();
    00140
    00144     FbxEffector& operator=(const FbxEffector& pEffector);
    00145
    00150     void Reset();
    00151
    00153     FbxNode* mNode;
    00154
    00156     bool mShow;
    00157
    00159 //
    00160 //  WARNING!
    00161 //
    00162 //  Anything beyond these lines may not be documented accurately and is
    00163 //  subject to change without notice.
    00164 //
    00166 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00167     //These members are for backward compatibility and should not be used.
    00168     //These properties are now published through class FbxControlSetPlug.
    00169     bool mTActive;
    00170     bool mRActive;
    00171     bool mCandidateTActive;
    00172     bool mCandidateRActive;
    00173 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00174 };
    00175
    00193 class FBXSDK_DLL FbxControlSet
    00194 {
    00195 public:
    00199     void Reset();
    00200
    00206     enum EType
    00207     {
    00208         eNone,
    00209         eFkIk,
    00210         eIkOnly
    00211     };
    00212
    00216     void SetType(EType pType);
    00217
    00221     EType GetType() const;
    00222
    00226     void SetUseAxis(bool pUseAxis);
    00227
    00231     bool GetUseAxis() const;
    00232
    00236     void SetLockTransform(bool pLockTransform);
    00237
    00241     bool GetLockTransform()const;
    00242
    00246     void SetLock3DPick(bool pLock3DPick);
    00247
    00251     bool GetLock3DPick() const;
    00252
    00262     bool SetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, const FbxControlSetLink& pControlSetLink);
    00263
    00273     bool GetControlSetLink(FbxCharacter::ENodeId pCharacterNodeId, FbxControlSetLink* pControlSetLink = NULL) const;
    00274
    00280     bool SetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector pEffector);
    00281
    00287     bool GetEffector(FbxEffector::ENodeId pEffectorNodeId, FbxEffector* pEffector = NULL);
    00288
    00295     bool SetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode* pNode, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set);
    00296
    00303     bool GetEffectorAux(FbxEffector::ENodeId pEffectorNodeId, FbxNode** pNode=NULL, FbxEffector::ESetId pEffectorSetId=FbxEffector::eAux1Set) const;
    00304
    00309     static char* GetEffectorNodeName(FbxEffector::ENodeId pEffectorNodeId);
    00310
    00316     static FbxEffector::ENodeId GetEffectorNodeId(char* pEffectorNodeName);
    00317
    00319 //
    00320 //  WARNING!
    00321 //
    00322 //  Anything beyond these lines may not be documented accurately and is
    00323 //  subject to change without notice.
    00324 //
    00326 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00327     void FromPlug(FbxControlSetPlug *pPlug);
    00328     void ToPlug(FbxControlSetPlug *pPlug);
    00329
    00330 private:
    00331     FbxControlSet();
    00332     ~FbxControlSet();
    00333
    00334     FbxCharacter*       mCharacter;
    00335     EType               mType;
    00336     bool                mUseAxis;
    00337     bool                mLockTransform;
    00338     bool                mLock3DPick;
    00339     FbxControlSetLink   mControlSetLink[FbxCharacter::eNodeIdCount]; // Except floor node IDs!
    00340     FbxEffector         mEffector[FbxEffector::eNodeIdCount];
    00341     FbxNode*            mEffectorAux[FbxEffector::eNodeIdCount][FbxEffector::eSetIdCount-1];
    00342
    00343     FBXSDK_FRIEND_NEW();
    00344     friend class FbxCharacter;
    00345     friend class FbxNode;
    00346 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
    00347 };
    00348
    00352 class FBXSDK_DLL FbxControlSetPlug : public FbxObject
    00353 {
    00354     FBXSDK_OBJECT_DECLARE(FbxControlSetPlug, FbxObject);
    00355
    00356 public:
    00358     FbxPropertyT<FbxControlSet::EType> ControlSetType;
    00359
    00361     FbxPropertyT<FbxBool> UseAxis;
    00362
    00364     FbxPropertyT<FbxReference> Character;
    00365
    00374         FbxError& GetError();
    00375
    00377         enum EErrorCode
    00378         {
    00379             eError,
    00380             eErrorCount
    00381         };
    00382
    00386         EErrorCode GetLastErrorID() const;
    00387
    00391         const char* GetLastErrorString() const;
    00393
    00394 protected:
    00395     FbxControlSetPlug(FbxManager& pManager, char const* pName);
    00396     virtual void Construct(const FbxControlSetPlug* pFrom);
    00397
    00398     virtual FbxStringList GetTypeFlags() const;
    00399
    00400 private:
    00401     FbxArray<FbxProperty>    mFKBuf;
    00402     FbxArray<FbxProperty>    mIKBuf;
    00403
    00404     FbxError mError;
    00405
    00406     friend class FbxScene;
    00407     friend class FbxControlSet;
    00408 };
    00409
    00410 inline EFbxType FbxTypeOf(const FbxControlSet::EType&){ return eFbxEnum; }
    00411
    00412 #include <fbxsdk/fbxsdk_nsend.h>
    00413
    00414 #endif /* _FBXSDK_SCENE_CONSTRAINT_CONTROL_SET_H_ */