fbxbindingoperator.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_SHADING_BINDING_OPERATOR_H_
00014 #define _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/scene/shading/fbxbindingtablebase.h>
00019 
00020 #include <fbxsdk/core/base/fbxmap.h>
00021 #include <fbxsdk/core/base/fbxstring.h>
00022 
00023 #include <fbxsdk/fbxsdk_nsbegin.h>
00024 
00052 class FBXSDK_DLL FbxBindingOperator : public FbxBindingTableBase
00053 {
00054     FBXSDK_OBJECT_DECLARE(FbxBindingOperator,FbxBindingTableBase);
00055 
00056 public:
00062     template <class FBXTYPE>
00063     bool Evaluate(FbxObject const* pObject, FBXTYPE* pResult) const
00064     {
00065         EFbxType lResultType;
00066         void* lResult = NULL;
00067 
00068         bool lSuccess = Evaluate(pObject, &lResultType, &lResult);
00069 
00070         if (lSuccess)
00071         {
00072             FbxTypeCopy(*pResult, lResult, lResultType);
00073         }
00074 
00075         FreeEvaluationResult(lResultType, lResult);
00076 
00077         return lSuccess;
00078     }
00079     
00088     template <class FBXTYPE>
00089     bool ReverseEvaluation(FbxObject const* pObject, FBXTYPE * pInOut, 
00090                             bool setObj=false, int index=0) const
00091     {
00092 
00093         void const* lIn = pInOut;
00094         void* lOut = NULL;
00095         EFbxType lOutType;
00096 
00097         bool lSuccess = ReverseEvaluate(pObject, lIn, &lOut, &lOutType, setObj, index);
00098 
00099         if (lSuccess)
00100         {
00101             FbxTypeCopy(*pInOut, lOut, lOutType);
00102         }
00103 
00104         FreeEvaluationResult(lOutType, lOut);
00105 
00106         return lSuccess;
00107     }
00108 
00122     template <class FBXTYPE>
00123     bool EvaluateEntry(FbxObject const* pObject, char const* pEntryDestinationName, FBXTYPE* pResult) const
00124     {
00125         EFbxType lResultType;
00126         void* lResult = NULL;
00127 
00128         bool lSuccess = EvaluateEntry(pObject, pEntryDestinationName, &lResultType, &lResult);
00129 
00130         if (lSuccess)
00131         {
00132             FbxTypeCopy(*pResult, lResult, lResultType);
00133         }
00134 
00135         FreeEvaluationResult(lResultType, lResult);
00136 
00137         return lSuccess;
00138     }
00139 
00144     FbxPropertyT<FbxString> FunctionName;
00145 
00150     FbxPropertyT<FbxString> TargetName;
00151 
00153     // Static values
00155 
00157     static const char* sFunctionName;
00159     static const char* sTargetName;
00160 
00162     static const char* sDefaultFunctionName;
00164     static const char* sDefaultTargetName;
00165 
00166 
00168     // Functions
00170 
00174     static void RegisterFunctions();
00175 
00179     static void UnregisterFunctions();
00180 
00181 
00186     class FBXSDK_DLL Function
00187     {
00188     public:
00190         virtual ~Function() {}
00191 
00199         virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const = 0;
00200         
00212         virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const = 0;
00213     };
00214 
00218     class FBXSDK_DLL FunctionCreatorBase
00219     {
00220     public:
00222         virtual ~FunctionCreatorBase() {}
00223 
00227         virtual char const* GetFunctionName() const = 0;
00228 
00231         virtual Function* CreateFunction() const = 0;
00232     };
00233 
00237     template <class FUNCTION>
00238     class FunctionCreator : public FunctionCreatorBase
00239     {
00240     public:
00241 
00245         virtual char const* GetFunctionName() const
00246         {
00247             return FUNCTION::FunctionName;
00248         }
00249 
00252         virtual Function* CreateFunction() const
00253         {
00254             return FbxNew< FUNCTION >();
00255         }
00256     };
00257 
00261     class FBXSDK_DLL FunctionRegistry
00262     {
00263     public:
00267         static void RegisterFunctionCreator(FunctionCreatorBase const& pCreator)
00268         {
00269             sRegistry.Insert(pCreator.GetFunctionName(), &pCreator);
00270         }
00271 
00275         static void UnregisterFunctionCreator(FunctionCreatorBase const& pCreator)
00276         {
00277             sRegistry.Remove(pCreator.GetFunctionName());
00278         }
00279 
00283         static FunctionCreatorBase const* FindCreator(char const* pName)
00284         {
00285             RegistryType::RecordType* lRecord = sRegistry.Find(pName);
00286 
00287             if (lRecord)
00288             {
00289                 return lRecord->GetValue();
00290             }
00291             else
00292             {
00293                 return NULL;
00294             }
00295         }
00296 
00297     private:
00298         typedef FbxMap<char const*, FunctionCreatorBase const*, FbxCharCompare> RegistryType;
00299         static RegistryType sRegistry;
00300     };
00301 
00302 
00304     //
00305     //  WARNING!
00306     //
00307     //  Anything beyond these lines may not be documented accurately and is
00308     //  subject to change without notice.
00309     //
00311 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00312     bool EvaluateEntry(FbxObject const* pObject, char const* pEntryDestinationName, EFbxType* pResultType, void** pResult) const;
00313 
00314     //[mt]Get property from operator entry
00315     bool GetEntryProperty(FbxObject const* pObject, char const* pEntryDestinationName, FbxProperty & pProp) const;
00316 
00317 protected:
00318     // construction must be done through Create()
00319     FbxBindingOperator(FbxManager& pManager, char const* pName);
00320     virtual void Destruct(bool pRecursive, bool pDependents);
00321 
00322     virtual bool ConstructProperties(bool pForceSet);
00323 
00324     void InstantiateFunction();
00325 
00333     bool Evaluate(FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00334 
00337     //bool ReverseEvaluate(FbxObject const* pTarget, void const *pResult) const;
00338     bool ReverseEvaluate(FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00339 
00344     void FreeEvaluationResult(EFbxType pResultType, void* pResult) const;
00345 
00346     Function* mFunction;
00347 
00348 #endif //DOXYGEN_SHOULD_SKIP_THIS
00349 };
00350 
00351 
00355 class FbxNodePositionBOF : public FbxBindingOperator::Function
00356 {
00357 public:
00359     static char const* FunctionName;
00360 
00370     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00371     
00373     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00374 
00376     //
00377     //  WARNING!
00378     //
00379     //  Anything beyond these lines may not be documented accurately and is
00380     //  subject to change without notice.
00381     //
00383 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00384     FbxNodePositionBOF();
00385     virtual ~FbxNodePositionBOF();
00386 
00387 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00388 };
00389 
00390 
00394 class FbxNodeDirectionBOF : public FbxBindingOperator::Function
00395 {
00396 public:
00398     static char const* FunctionName;
00399 
00409     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00410     
00412     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00413 
00415     //
00416     //  WARNING!
00417     //
00418     //  Anything beyond these lines may not be documented accurately and is
00419     //  subject to change without notice.
00420     //
00422 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00423     FbxNodeDirectionBOF();
00424     virtual ~FbxNodeDirectionBOF();
00425 
00426 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00427 };
00428 
00429 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00430 
00432 class FbxAssignBOF : public FbxBindingOperator::Function
00433 {
00434 public:
00436     static char const* FunctionName;
00437 
00444     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00445     
00447     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00448 
00450     //
00451     //  WARNING!
00452     //
00453     //  Anything beyond these lines may not be documented accurately and is
00454     //  subject to change without notice.
00455     //
00457 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00458     FbxAssignBOF();
00459     virtual ~FbxAssignBOF();
00460 
00461 
00462 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00463 };
00464 
00465 
00469 class FbxConditionalBOF : public FbxBindingOperator::Function
00470 {
00471 public:
00473     static char const* FunctionName;
00474 
00488     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00489     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00490 
00492     //
00493     //  WARNING!
00494     //
00495     //  Anything beyond these lines may not be documented accurately and is
00496     //  subject to change without notice.
00497     //
00499 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00500     FbxConditionalBOF();
00501     virtual ~FbxConditionalBOF();
00502 
00503 
00504 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00505 };
00506 
00507 
00511 class FbxSwitchBOF : public FbxBindingOperator::Function
00512 {
00513 public:
00515     static char const* FunctionName;
00516 
00530     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00531     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00532 
00534     //
00535     //  WARNING!
00536     //
00537     //  Anything beyond these lines may not be documented accurately and is
00538     //  subject to change without notice.
00539     //
00541 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00542     FbxSwitchBOF();
00543     virtual ~FbxSwitchBOF();
00544 
00545 
00546 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00547 };
00548 
00549 
00550 class FbxTRSToMatrixBOF : public FbxBindingOperator::Function
00551 {
00552 public:
00554     static char const* FunctionName;
00555 
00565     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00566     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00567 
00569     //
00570     //  WARNING!
00571     //
00572     //  Anything beyond these lines may not be documented accurately and is
00573     //  subject to change without notice.
00574     //
00576 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00577     FbxTRSToMatrixBOF();
00578     virtual ~FbxTRSToMatrixBOF();
00579 
00580 
00581 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00582 };
00583 
00584 
00585 class FbxAddBOF : public FbxBindingOperator::Function
00586 {
00587 public:
00589     static char const* FunctionName;
00590 
00600     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00601     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00602 
00604     //
00605     //  WARNING!
00606     //
00607     //  Anything beyond these lines may not be documented accurately and is
00608     //  subject to change without notice.
00609     //
00611 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00612     FbxAddBOF();
00613     virtual ~FbxAddBOF();
00614 
00615 
00616 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00617 };
00618 
00619 
00620 class FbxSubstractBOF : public FbxBindingOperator::Function
00621 {
00622 public:
00624     static char const* FunctionName;
00625 
00635     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00636     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00637     
00639     //
00640     //  WARNING!
00641     //
00642     //  Anything beyond these lines may not be documented accurately and is
00643     //  subject to change without notice.
00644     //
00646 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00647     FbxSubstractBOF();
00648     virtual ~FbxSubstractBOF();
00649 
00650 
00651 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00652 };
00653 
00654 
00655 class FbxMultiplyBOF : public FbxBindingOperator::Function
00656 {
00657 public:
00659     static char const* FunctionName;
00660 
00670     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00671     //Set index to 1 to get realWorldScale.  
00672     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00673     
00675     //
00676     //  WARNING!
00677     //
00678     //  Anything beyond these lines may not be documented accurately and is
00679     //  subject to change without notice.
00680     //
00682 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00683     FbxMultiplyBOF();
00684     virtual ~FbxMultiplyBOF();
00685 
00686 
00687 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00688 };
00689 
00690 
00691 class FbxMultiplyDistBOF : public FbxBindingOperator::Function
00692 {
00693 public:
00695     static char const* FunctionName;
00696 
00706     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00707     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00708     
00710     //
00711     //  WARNING!
00712     //
00713     //  Anything beyond these lines may not be documented accurately and is
00714     //  subject to change without notice.
00715     //
00717 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00718     FbxMultiplyDistBOF();
00719     virtual ~FbxMultiplyDistBOF();
00720 
00721 
00722 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00723 };
00724 
00725 class FbxOneOverXBOF : public FbxBindingOperator::Function
00726 {
00727 public:
00729     static char const* FunctionName;
00730 
00740     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00741     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00742 
00744     //
00745     //  WARNING!
00746     //
00747     //  Anything beyond these lines may not be documented accurately and is
00748     //  subject to change without notice.
00749     //
00751 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00752     FbxOneOverXBOF();
00753     virtual ~FbxOneOverXBOF();
00754 
00755 
00756 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00757 };
00758 
00759 class FbxPowerBOF : public FbxBindingOperator::Function
00760 {
00761 public:
00763     static char const* FunctionName;
00764 
00774     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00775     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00776 
00778     //
00779     //  WARNING!
00780     //
00781     //  Anything beyond these lines may not be documented accurately and is
00782     //  subject to change without notice.
00783     //
00785 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00786     FbxPowerBOF();
00787     virtual ~FbxPowerBOF();
00788 
00789 
00790 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00791 };
00792 
00793 class FbxDegreeToRadianBOF : public FbxBindingOperator::Function
00794 {
00795 public:
00797     static char const* FunctionName;
00798 
00808     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00809     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00810     
00812     //
00813     //  WARNING!
00814     //
00815     //  Anything beyond these lines may not be documented accurately and is
00816     //  subject to change without notice.
00817     //
00819 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00820     FbxDegreeToRadianBOF();
00821     virtual ~FbxDegreeToRadianBOF();
00822 
00823 
00824 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00825 };
00826 
00827 
00828 class FbxVectorDegreeToVectorRadianBOF : public FbxBindingOperator::Function
00829 {
00830 public:
00832     static char const* FunctionName;
00833 
00843     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00844     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00845     
00847     //
00848     //  WARNING!
00849     //
00850     //  Anything beyond these lines may not be documented accurately and is
00851     //  subject to change without notice.
00852     //
00854 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00855     FbxVectorDegreeToVectorRadianBOF();
00856     virtual ~FbxVectorDegreeToVectorRadianBOF();
00857 
00858 
00859 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00860 };
00861 
00862 
00863 
00864 class FbxSphericalToCartesianBOF : public FbxBindingOperator::Function
00865 {
00866 public:
00868     static char const* FunctionName;
00869 
00879     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00880     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00881     
00883     //
00884     //  WARNING!
00885     //
00886     //  Anything beyond these lines may not be documented accurately and is
00887     //  subject to change without notice.
00888     //
00890 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00891     FbxSphericalToCartesianBOF();
00892     virtual ~FbxSphericalToCartesianBOF();
00893 
00894 
00895 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00896 };
00897 
00898 
00899 
00900 class FbxIsYupBOF : public FbxBindingOperator::Function
00901 {
00902 public:
00904     static char const* FunctionName;
00905 
00915     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00916     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00917     
00919     //
00920     //  WARNING!
00921     //
00922     //  Anything beyond these lines may not be documented accurately and is
00923     //  subject to change without notice.
00924     //
00926 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00927     FbxIsYupBOF();
00928     virtual ~FbxIsYupBOF();
00929 
00930 
00931 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00932 };
00933 
00934 
00935 
00939 class FbxSymbolIDBOF : public FbxBindingOperator::Function
00940 {
00941 public:
00943     static char const* FunctionName;
00944 
00953     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00954     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00955     
00957     //
00958     //  WARNING!
00959     //
00960     //  Anything beyond these lines may not be documented accurately and is
00961     //  subject to change without notice.
00962     //
00964 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00965     FbxSymbolIDBOF();
00966     virtual ~FbxSymbolIDBOF();
00967 
00968 
00969 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
00970 };
00971 
00972 
00976 class FbxSpotDistributionChooserBOF : public FbxBindingOperator::Function
00977 {
00978 public:
00980     static char const* FunctionName;
00981 
00991     virtual bool Evaluate(FbxBindingOperator const* pOperator, FbxObject const* pObject, EFbxType* pResultType, void** pResult) const;
00992     
00994     virtual bool ReverseEvaluate(FbxBindingOperator const* pOperator, FbxObject const* pTarget, void const* pIn, void** pOut, EFbxType* pOutType, bool setObj, int index) const;
00995     
00997     //
00998     //  WARNING!
00999     //
01000     //  Anything beyond these lines may not be documented accurately and is
01001     //  subject to change without notice.
01002     //
01004 #ifndef DOXYGEN_SHOULD_SKIP_THIS
01005     FbxSpotDistributionChooserBOF();
01006     virtual ~FbxSpotDistributionChooserBOF();
01007 
01008 
01009 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
01010 };
01011 
01012 #endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
01013 
01014 #include <fbxsdk/fbxsdk_nsend.h>
01015 
01016 #endif /* _FBXSDK_SCENE_SHADING_BINDING_OPERATOR_H_ */