kfbxsdkmanager.h

Go to the documentation of this file.
00001 
00004 #ifndef _FBXSDK_SDK_MANAGER_H_
00005 #define _FBXSDK_SDK_MANAGER_H_
00006 
00007 /**************************************************************************************
00008 
00009  Copyright © 2001 - 2007 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material
00013  (collectively the "Data") in these files contain unpublished information
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by
00015  Canada and United States of America federal copyright law and by international
00016  treaties.
00017 
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE,
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE.
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE.
00028 
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE.
00039 
00040 **************************************************************************************/
00041 
00042 #include <kaydaradef.h>
00043 #ifndef KFBX_DLL 
00044     #define KFBX_DLL K_DLLIMPORT
00045 #endif
00046 
00047 #include <kaydara.h>
00048 
00049 #include <klib/karrayul.h>
00050 #include <klib/kerror.h>
00051 
00052 #ifndef MB_FBXSDK
00053 #include <kbaselib_nsuse.h>
00054 #endif
00055 #include <kbaselib_forward.h>
00056 
00057 #include <kfbxplugins/kfbxmemoryallocator.h>
00058 
00059 #include <kfbxplugins/kfbxplug.h>
00060 
00061 #include <kfbxplugins/kfbxthumbnail.h>
00062 #include <kfbxplugins/kfbxsceneinfo.h>
00063 #include <kfbxplugins/kfbxgeometryconverter.h>
00064 #include <kfbxplugins/kfbximageconverter.h>
00065 #include <kfbxplugins/kfbxproperty.h>
00066 #include <kfbxplugins/kfbxtypes.h>
00067 #include <kfbxplugins/kfbxobject.h>
00068 #include <kfbxio/kfbxexporter.h>
00069 #include <kfbxio/kfbximporter.h>
00070 #include <kfbxplugins/kfbxlayer.h>
00071 #include <fbxfilesdk_nsbegin.h>
00072 
00073     class KFbxUserNotification;
00074     class KFbxObject;
00075     class KFbxGeometryConverter;
00076     class KFbxImageConverter;
00077     class KFbxScene;
00078     class KFbxExporter;
00079     class KFbxImporter;
00080     class KFbxNode;
00081     class KFbxSurfaceMaterial;
00082     class KFbxTexture;
00083     class KFbxVideo;
00084     class KFbxNodeAttribute;
00085     class KFbxNull;
00086     class KFbxMarker;
00087     class KFbxCamera;
00088     class KFbxCameraSwitcher;
00089     class KFbxLight;
00090     class KFbxMesh;
00091     class KFbxPatch;
00092     class KFbxNurb;
00093     class KFbxGeometryWeightedMap;
00094     class KFbxSkeleton;
00095     class KFbxOpticalReference;
00096     class KFbxPose;
00097     class KFbxThumbnail;
00098     class KFbxShape;
00099     class KFbxProperty;
00100     class KFbxSceneInfo;
00101     class KFbxGenericNode;
00102     class KFbxDeformer;
00103     class KFbxSkin;
00104     class KFbxSubDeformer;
00105     class KFbxCluster;
00106     class KFbxConstraint;
00107     class KFbxConstraintPosition;
00108     class KFbxConstraintScale;
00109     class KFbxConstraintRotation;
00110     class KFbxConstraintParent;
00111     class KFbxConstraintAim;
00112     class KFbxConstraintSingleChainIK;
00113     class KFbxLayer;
00114     class KFbxTakeNode;
00115     class KFbxCharacter;
00116     class KFbxCharacterPose;
00117     class KFbxControlSetPlug;
00118     class KFbxNurbsCurve;
00119     class KFbxTrimNurbsSurface;
00120     class KFbxBoundary;
00121     class KFbxNurbsSurface;
00122     class KFbxDataType;
00123 
00124     typedef class KFbxCluster KFbxLink;
00125 
00126 
00127     class KFbxSdkManager_internal;
00128 
00129 
00142     class KFBX_DLL KFbxSdkManager
00143     {
00144 
00145     public:
00150         
00159             static bool SetMemoryAllocator(KFbxMemoryAllocator* pMemoryAllocator);
00161 
00162 
00171             static KFbxSdkManager* CreateKFbxSdkManager();  
00172 
00176             virtual void DestroyKFbxSdkManager();
00178 
00179 
00184         public:
00194             template <typename T1,typename T2> inline kFbxClassId RegisterClass(char const *pName,T1 const *pFBX_TYPE_Class,T2 const *pFBX_TYPE_ParentClass,const char *pFbxFileTypeName=0,const char *pFbxFileSubTypeName=0) {
00195                 if (!Internal_RegisterClass(T1::ClassId)) {
00196                     T1::ClassId  = Internal_RegisterClass(pName,T2::ClassId,(kFbxPlugConstructor)T1::SdkManagerCreate,pFbxFileTypeName,pFbxFileSubTypeName );
00197                 }
00198                 return T1::ClassId;
00199             }
00200 
00201             template <typename T> inline kFbxClassId    RegisterRuntimeClass(char const *pName,T const *pFBX_TYPE_ParentClass,const char *pFbxFileTypeName=0,const char *pFbxFileSubTypeName=0) {
00202                 return Internal_RegisterClass(pName,T::ClassId,(kFbxPlugConstructor)T::SdkManagerCreate,pFbxFileTypeName,pFbxFileSubTypeName );
00203             }
00204 
00205             template <typename T1,typename T2> inline kFbxClassId OverrideClass(T1 const *pFBX_TYPE_Class,T2 const *pFBX_TYPE_OverridenClass) {
00206                 T1::ClassId  = Internal_OverrideClass(T2::ClassId,(kFbxPlugConstructor)T1::SdkManagerCreate );
00207                 return T1::ClassId;
00208             }
00209 
00210             KFbxPlug*       CreateClass     (kFbxClassId,char const *pName);
00211             kFbxClassId     FindClass       (char const *pClassName);
00212             kFbxClassId     FindFbxFileClass(const char *pFbxFileTypeName,const char *pFbxFileSubTypeName);
00213 
00215 
00220         public:
00225             int                                 GetSrcObjectCount(kFbxClassId pClassId);
00226             inline int                          GetSrcObjectCount()                     { return GetSrcObjectCount(kFbxClassId()); }
00227             template < class T > inline int     GetSrcObjectCount(T const *pFBX_TYPE)   { return GetSrcObjectCount(T::ClassId); }
00232             KFbxObject*                         GetSrcObject(kFbxClassId pClassId,int pIndex=0);
00233             inline KFbxObject*                  GetSrcObject(int pIndex=0)                          { return GetSrcObject(kFbxClassId(),pIndex); }
00234             template < class T > inline T*      GetSrcObject(T const *pFBX_TYPE,int pIndex=0)       { return (T *)GetSrcObject(T::ClassId,pIndex); }
00241             KFbxObject*                         FindSrcObject(kFbxClassId pClassId,const char *pName,int pStartIndex=0);    
00242             inline KFbxObject*                  FindSrcObject(const char *pName,int pStartIndex=0)  { return FindSrcObject(kFbxClassId(),pName,pStartIndex); }
00243             template < class T > inline T*      FindSrcObject(T const *pFBX_TYPE,const char *pName,int pStartIndex=0)   { return (T *)FindSrcObject(pName,T::ClassId,pStartIndex); }
00245 
00250         public:
00254             KError& GetError();
00255 
00258             typedef enum 
00259             {
00260                 eOBJECT_NOT_FOUND,    
00261                 eNAME_ALREADY_IN_USE, 
00262                 eERROR_COUNT          
00263             } EError;
00264             
00268             EError GetLastErrorID();
00269 
00273             char* GetLastErrorString();
00274 
00276 
00286         static KString PrefixName(char const* pPrefix, char const* pName);
00287 
00295             KFbxDataType CreateFbxDataType(char *pName,EFbxType pType);
00296 
00300             KFbxDataType const &GetFbxDataTypeFromName(char *pDataType);
00301             
00302             
00304 
00305 
00316             K_DEPRECATED KFbxScene* CreateKFbxScene();
00317             K_DEPRECATED KFbxNode* CreateKFbxNode(char const* pName);
00318             K_DEPRECATED KFbxNull* CreateKFbxNull();
00319             K_DEPRECATED KFbxMarker* CreateKFbxMarker();
00320             K_DEPRECATED KFbxCamera* CreateKFbxCamera();
00321             K_DEPRECATED KFbxLight* CreateKFbxLight();
00322             K_DEPRECATED KFbxSkeleton* CreateKFbxSkeleton();
00323             K_DEPRECATED KFbxMesh* CreateKFbxMesh(char const* pName = "");
00324             K_DEPRECATED KFbxPatch* CreateKFbxPatch(char const* pName = "");
00325             K_DEPRECATED KFbxNurb* CreateKFbxNurb(char const* pName = "");
00326             K_DEPRECATED KFbxNurbsSurface* CreateKFbxNurbsSurface(char const* pName = "");
00327             K_DEPRECATED KFbxNurbsCurve* CreateKFbxNurbsCurve(char const* pName = "");
00328             K_DEPRECATED KFbxTrimNurbsSurface* CreateKFbxTrimNurbsSurface(char const* pName = "");
00329             K_DEPRECATED KFbxBoundary* CreateKFbxBoundary(char const* pName = "");
00330             K_DEPRECATED KFbxGeometryWeightedMap* CreateKFbxGeometryWeightedMap(char const* pName = "");
00331             K_DEPRECATED KFbxOpticalReference* CreateKFbxOpticalReference();
00332             K_DEPRECATED KFbxLink* CreateKFbxLink();
00333             K_DEPRECATED KFbxSurfaceMaterial* CreateKFbxSurfaceMaterial(char const* pName); 
00334             K_DEPRECATED KFbxShape* CreateKFbxShape();
00335             K_DEPRECATED KFbxTexture* CreateKFbxTexture(char const* pName);
00336             K_DEPRECATED KFbxVideo* CreateKFbxVideo(char const* pName);
00337             K_DEPRECATED KFbxPose* CreateKFbxPose(char const* pName, bool pIsBindPose);
00338             K_DEPRECATED KFbxGenericNode* CreateKFbxGenericNode(char const* pName);
00339             K_DEPRECATED KFbxSkin* CreateKFbxSkin(char const* pName);
00340             K_DEPRECATED KFbxCluster* CreateKFbxCluster(char const* pName);
00341             K_DEPRECATED KFbxThumbnail* CreateKFbxThumbnail();
00342             K_DEPRECATED KFbxSceneInfo* CreateKFbxSceneInfo();
00343             K_DEPRECATED KFbxGeometryConverter* CreateKFbxGeometryConverter();
00344             K_DEPRECATED KFbxImageConverter* CreateKFbxImageConverter();
00345             K_DEPRECATED KFbxExporter* CreateKFbxExporter();
00346             K_DEPRECATED KFbxImporter* CreateKFbxImporter();
00347             K_DEPRECATED KFbxConstraint* CreateKFbxConstraint(char const* pName, int pType );
00348             K_DEPRECATED KFbxCharacter* CreateKFbxCharacter(char const* pName );
00349             K_DEPRECATED KFbxCharacterPose* CreateKFbxCharacterPose(char const* pName );
00350             K_DEPRECATED KFbxControlSetPlug* CreateKFbxControlSetPlug(char const* pName );
00351 
00352 
00353             virtual KFbxUserNotification* AllocateKFbxUserNotification(const KString& pLogFileName, const KString& pSessionDescription);
00354             KFbxUserNotification*         CreateKFbxUserNotification(const KString& pLogFileName, const KString& pSessionDescription);
00356 
00363             K_DEPRECATED virtual bool DestroyKFbxScene(KFbxScene* pScene, bool pDestroyContent = true);
00364             K_DEPRECATED virtual bool DestroyKFbxNode(KFbxNode* pNode, bool pDestroyContent = true);
00365             K_DEPRECATED virtual bool DestroyKFbxNodeAttribute(KFbxNodeAttribute* pNodeAttribute);
00366             K_DEPRECATED virtual bool DestroyKFbxGeometryWeightedMap(KFbxGeometryWeightedMap* pGeometryWeightedMap);
00367             K_DEPRECATED virtual bool DestroyKFbxLink(KFbxLink* pLink);
00368             K_DEPRECATED virtual bool DestroyKFbxSurfaceMaterial(KFbxSurfaceMaterial* pMaterial);   
00369             K_DEPRECATED virtual bool DestroyKFbxShape(KFbxShape* pShape);
00370             K_DEPRECATED virtual bool DestroyKFbxTexture(KFbxTexture* pTexture);
00371             K_DEPRECATED virtual bool DestroyKFbxVideo(KFbxVideo* pVideo);
00372             K_DEPRECATED virtual bool DestroyKFbxPose(KFbxPose* pPose);
00373             K_DEPRECATED virtual bool DestroyKFbxGenericNode(KFbxGenericNode* pGenericNode);
00374             K_DEPRECATED virtual bool DestroyKFbxDeformer(KFbxDeformer* pDeformer);
00375             K_DEPRECATED virtual bool DestroyKFbxSubDeformer(KFbxSubDeformer* pSubDeformer);
00376             K_DEPRECATED virtual bool DestroyKFbxThumbnail(KFbxThumbnail* pThumbnail);
00377             K_DEPRECATED virtual bool DestroyKFbxSceneInfo(KFbxSceneInfo* pSceneInfo);
00378             K_DEPRECATED bool DestroyKFbxGeometryConverter(KFbxGeometryConverter* pConverter);
00379             K_DEPRECATED bool DestroyKFbxImageConverter(KFbxImageConverter* pConverter);
00380             K_DEPRECATED bool DestroyKFbxExporter(KFbxExporter* pExporter);
00381             K_DEPRECATED bool DestroyKFbxImporter(KFbxImporter* pImporter);
00382             K_DEPRECATED bool DestroyKFbxConstraint(KFbxConstraint* pConstraint);
00383             K_DEPRECATED bool DestroyKFbxCharacter(KFbxCharacter* pCharacter);
00384             K_DEPRECATED bool DestroyKFbxCharacterPose(KFbxCharacterPose* pCharacterPose);
00385             K_DEPRECATED bool DestroyKFbxControlSetPlug(KFbxControlSetPlug* pControlSetPlug);
00386 
00387             virtual bool DestroyKFbxUserNotification();
00388 
00390             
00396         public: 
00397             K_DEPRECATED virtual KFbxNode* FindKFbxNode(char const* pName, int pIndex = 0);
00398             K_DEPRECATED virtual KFbxSurfaceMaterial* FindKFbxSurfaceMaterial(char const* pName, int pIndex = 0);
00399             K_DEPRECATED virtual KFbxTexture* FindKFbxTexture(char const* pName, int pIndex = 0);
00400             K_DEPRECATED virtual KFbxVideo* FindKFbxVideo(char const* pName, int pIndex = 0);
00401             K_DEPRECATED virtual KFbxPose* FindKFbxPose(char const* pName, int pIndex = 0);
00402             K_DEPRECATED virtual KFbxGenericNode* FindKFbxGenericNode(char const* pName, int pIndex = 0);
00404 
00410             K_DEPRECATED int GetKFbxNodeCount() ;
00411             K_DEPRECATED KFbxNode* GetKFbxNode(int pIndex) ;
00412             K_DEPRECATED int GetKFbxGenericNodeCount() ;
00413             K_DEPRECATED KFbxGenericNode* GetKFbxGenericNode(int pIndex) ;
00414             K_DEPRECATED int GetKFbxSurfaceMaterialCount() ;
00415             K_DEPRECATED KFbxSurfaceMaterial* GetKFbxSurfaceMaterial(int pIndex) ;
00416             K_DEPRECATED int GetKFbxTextureCount() ;
00417             K_DEPRECATED KFbxTexture* GetKFbxTexture(int pIndex) ;
00418             K_DEPRECATED int GetKFbxVideoCount() ;
00419             K_DEPRECATED KFbxVideo* GetKFbxVideo(int pIndex) ;
00420             K_DEPRECATED int GetKFbxPoseCount() ;
00421             K_DEPRECATED KFbxPose* GetKFbxPose(int pIndex) ;
00422             K_DEPRECATED int GetKFbxLinkCount() ;
00423             K_DEPRECATED KFbxLink* GetKFbxLink(int pIndex) ;
00424             K_DEPRECATED int GetKFbxConstraintCount() ;
00425             K_DEPRECATED int GetKFbxConstraintCount(int pType) ;
00426             K_DEPRECATED KFbxConstraint* GetKFbxConstraint(int pIndex, int pType) ;
00427             K_DEPRECATED int GetKFbxCharacterCount() ;
00428             K_DEPRECATED KFbxCharacter* GetKFbxCharacter(int pIndex) ;
00429             K_DEPRECATED int GetKFbxCharacterPoseCount() ;
00430             K_DEPRECATED KFbxCharacterPose* GetKFbxCharacterPose(int pIndex) ;
00431             K_DEPRECATED int GetKFbxControlSetPlugCount() ;
00432             K_DEPRECATED KFbxControlSetPlug* GetKFbxControlSetPlug(int pIndex) ;
00433             K_DEPRECATED int GetKFbxGeometryWeightedMapCount() ;
00434             K_DEPRECATED KFbxGeometryWeightedMap* GetKFbxGeometryWeightedMap(int pIndex) ;
00435             K_DEPRECATED int GetKFbxSceneCount() ;
00436             K_DEPRECATED KFbxScene* GetKFbxScene(int pIndex) ;
00437 
00442             KFbxUserNotification* GetUserNotification();
00444             
00445             //ADDED MATERIAL
00446             /*  KFbxLayerElement
00447                 KFbxLayerElementNormal
00448                 KFbxLayerElementMaterial
00449                 KFbxLayerElementPolygonGroup
00450                 KFbxLayerElementUV
00451                 KFbxLayerElementVertexColor
00452                 KFbxLayerElementSmoothing
00453                 KFbxLayerElementUserData
00454                 KFbxLayerElementVisibility
00455                 KFbxLayerElementTexture
00456             */
00457             bool DestroyKFbxLayerElement(KFbxLayerElement* pLayerElement);
00458             KFbxLayerElement* CreateKFbxLayerElement(char const* pName );
00459 
00460             bool DestroyKFbxLayerElementNormal(KFbxLayerElementNormal* pLayerElementNormal);
00461             KFbxLayerElementNormal* CreateKFbxLayerElementNormal(char const* pName );
00462 
00463             bool DestroyKFbxLayerElementMaterial(KFbxLayerElementMaterial* pLayerElementMaterial);
00464             KFbxLayerElementMaterial* CreateKFbxLayerElementMaterial(char const* pName );
00465 
00466             bool DestroyKFbxLayerElementPolygonGroup(KFbxLayerElementPolygonGroup* pLayerElementPolygonGroup);
00467             KFbxLayerElementPolygonGroup* CreateKFbxLayerElementPolygonGroup(char const* pName );
00468 
00469             bool DestroyKFbxLayerElementUV(KFbxLayerElementUV* pLayerElementUV);
00470             KFbxLayerElementUV* CreateKFbxLayerElementUV(char const* pName );
00471 
00472             bool DestroyKFbxLayerElementVertexColor(KFbxLayerElementVertexColor* pLayerElementVertexColor);
00473             KFbxLayerElementVertexColor* CreateKFbxLayerElementVertexColor(char const* pName );
00474 
00475             bool DestroyKFbxLayerElementSmoothing(KFbxLayerElementSmoothing* pLayerElementSmoothing);
00476             KFbxLayerElementSmoothing* CreateKFbxLayerElementSmoothing(char const* pName );
00477 
00478             bool DestroyKFbxLayerElementUserData(KFbxLayerElementUserData* pLayerElementUserData);
00479             KFbxLayerElementUserData* CreateKFbxLayerElementUserData(char const* pName, KFbxLayerElementUserData const& pOther );
00480             KFbxLayerElementUserData* CreateKFbxLayerElementUserData(char const* pName, int pId, KArrayTemplate<KFbxDataType>& pDataTypes, KArrayTemplate<const char*>& pDataNames);
00481 
00482             bool DestroyKFbxLayerElementVisibility(KFbxLayerElementVisibility* pLayerElementVisibility);
00483             KFbxLayerElementVisibility* CreateKFbxLayerElementVisibility(char const* pName );
00484 
00485             bool DestroyKFbxLayerElementTexture(KFbxLayerElementTexture* pLayerElementTexture);
00486             KFbxLayerElementTexture* CreateKFbxLayerElementTexture(char const* pName );
00487 
00488 
00490     //
00491     //  WARNING!
00492     //
00493     //  Anything beyond these lines may not be documented accurately and is 
00494     //  subject to change without notice.
00495     //
00497 
00498     #ifndef DOXYGEN_SHOULD_SKIP_THIS
00499 
00500     public:
00501 
00502 
00503 
00504 
00505         KFbxProperty*    CreateKFbxProperty(KProperty* pProperty);
00506         KFbxCameraSwitcher*  CreateKFbxCameraSwitcher();
00507 
00508         bool CanDestroyFbxSrcObject(KFbxObject* pObject, KFbxObject* pSrcObject, bool pRecursive, bool pDependents);
00509 
00510         void CreateMissingBindPoses(KFbxScene *pScene);
00511         int  GetBindPoseCount(KFbxScene *pScene);
00512 
00513         bool RegisterPlug(KFbxPlug const *pPlug);
00514         bool UnregisterPlug(KFbxPlug const *pPlug);
00515 
00516     private:
00517         kFbxClassId     Internal_RegisterClass  (char const *pClassName,kFbxClassId pParentClassId,kFbxPlugConstructor=0,char const* pFbxFileTypeName=0,char const* pFbxFileSubTypeName=0);
00518         bool            Internal_RegisterClass  (kFbxClassId    pClassId);
00519         kFbxClassId     Internal_OverrideClass  (kFbxClassId pClassId,kFbxPlugConstructor=0);
00520 
00521 
00522     #ifdef K_FBXNEWRENAMING
00523         
00524         enum ERenamingMode
00525         { 
00526             eMAYA_TO_FBX,
00527             eFBX_TO_MAYA,
00528             eLW_TO_FBX,
00529             eFBX_TO_LW,
00530             eXSI_TO_FBX,
00531             eFBX_TO_XSI,
00532             eMAX_TO_FBX,
00533             eFBX_TO_MAX,
00534             eMB_TO_FBX,
00535             eFBX_TO_MB
00536         };
00537 
00538         void RenameFor(ERenamingMode pMode);
00539 
00549         void ResolveNameClashing(bool pFromFbx, bool pIgnoreNS, bool pIsCaseSensitive, bool pComvertToWideChar, bool pReplaceNonAlphaNum, KString pNameSpaceSymbol);
00550 
00551     #endif
00552 
00553 
00554     protected:
00555 
00556         KFbxSdkManager();   
00557         virtual ~KFbxSdkManager();
00558 
00559 
00560         /*ADDED template array for
00561         KFbxLayerElement
00562         KFbxLayerElementNormal
00563         KFbxLayerElementMaterial
00564         KFbxLayerElementPolygonGroup
00565         KFbxLayerElementUV
00566         KFbxLayerElementVertexColor
00567         KFbxLayerElementSmoothing
00568         KFbxLayerElementUserData
00569         KFbxLayerElementVisibility
00570         KFbxLayerElementTexture
00571         */
00572 
00573         KArrayTemplate <KFbxLayerElement *> mLayerElement;
00574         KArrayTemplate <KFbxLayerElementNormal *> mLayerElementNormal;
00575         KArrayTemplate <KFbxLayerElementMaterial *> mLayerElementMaterial;
00576         KArrayTemplate <KFbxLayerElementPolygonGroup *> mLayerElementPolygonGroup;
00577         KArrayTemplate <KFbxLayerElementUV *> mLayerElementUV;
00578         KArrayTemplate <KFbxLayerElementVertexColor *> mLayerElementVertexColor;
00579         KArrayTemplate <KFbxLayerElementSmoothing *> mLayerElementSmoothing ;
00580         KArrayTemplate <KFbxLayerElementUserData *> mLayerElementUserData;
00581         KArrayTemplate <KFbxLayerElementVisibility *> mLayerElementVisibility;
00582         KArrayTemplate <KFbxLayerElementTexture *> mLayerElementTexture;
00583 
00584 
00585 
00586         
00587 
00588 
00590         virtual void Clear();
00591 
00592         // this object is destroyed when the manager is destroyed.
00593         KFbxUserNotification*                  mUserNotification;
00594 
00595         KObjectList*                           mObjectArray;
00596 
00597         // The KRenamingStrategy pointers may be set by derived class
00598         // By default, they are null and not used.
00599         KRenamingStrategy* mNodeRenamingStrategy;
00600         KRenamingStrategy* mMaterialRenamingStrategy;
00601         KRenamingStrategy* mTextureRenamingStrategy;
00602         KRenamingStrategy* mVideoRenamingStrategy;
00603 
00604         mutable KError mError;
00605 
00606         friend class KFbxReaderFbx;
00607         friend class KFbxReaderFbx6;
00608         friend class KFbxWriterFbx;
00609         friend class KFbxWriterFbx6;
00610         friend class KFbxPose;
00611 
00612         // Class Management
00613         bool ClassInit();
00614         bool ClassRelease();
00615 
00616         private:
00617             KFbxSdkManager_internal*    mInternal;
00618 
00619     #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00620         
00621     };
00622 
00623     typedef KFbxSdkManager* HKFbxSdkManager;
00624 
00625     // Connection management
00626     template < class T > inline int KFbxGetSrcCount(KFbxSdkManager *pObject, T const* VC6Dummy = 0)                             { return pObject ? pObject->GetSrcObjectCount(T::ClassId) : 0; }
00627     template < class T > inline int KFbxGetSrcCount(KFbxSdkManager *pObject,kFbxClassId pClassId, T const* VC6Dummy = 0)        { return pObject ? pObject->GetSrcObjectCount(pClassId) : 0;     }
00628     template < class T > inline T*  KFbxGetSrc(KFbxSdkManager *pObject,int pIndex=0)                                                { return pObject ? (T *) pObject->GetSrcObject(T::ClassId,pIndex) : 0; }
00629     template < class T > inline T*  KFbxGetSrc(KFbxSdkManager *pObject,int pIndex,kFbxClassId pClassId)                     { return pObject ? (T *) pObject->GetSrcObject(pClassId,pIndex) : 0;    }
00630     template < class T > inline T*  KFbxFindSrc(KFbxSdkManager *pObject,char const *pName,int pIndex=0)                         { return pObject ? (T *) pObject->FindSrcObject(T::ClassId,pName,pIndex) : 0;   }
00631     template < class T > inline T*  KFbxFindSrc(KFbxSdkManager *pObject,char const *pName,kFbxClassId pClassId,int pIndex=0)    { return pObject ? (T *) pObject->FindSrcObject(pClassId,pName,pIndex) : 0; }
00632     
00633     // Class Registration management
00634 
00635 #include <fbxfilesdk_nsend.h>
00636 
00637 #endif // #ifndef _FBXSDK_SDK_MANAGER_H_
00638 
00639