00001 
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXLAYERCONTAINER_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXLAYERCONTAINER_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 
00042 #include <fbxfilesdk/components/kbaselib/kaydaradef_h.h>
00043 #include <fbxfilesdk/components/kbaselib/kaydara.h>
00044 
00045 #include <fbxfilesdk/kfbxplugins/kfbxnodeattribute.h>
00046 #include <fbxfilesdk/kfbxplugins/kfbxlayer.h>
00047 
00048 #include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
00049 
00050 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00051 
00052 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00053 
00054 class KFbxSdkManager;
00055 
00056 
00076 class KFBX_DLL KFbxLayerContainer : public KFbxNodeAttribute
00077 {
00078     KFBXOBJECT_DECLARE(KFbxLayerContainer,KFbxNodeAttribute);
00079 public:
00080 
00083     virtual EAttributeType GetAttributeType() const { return eUNIDENTIFIED; } 
00084 
00089 
00093     int CreateLayer();
00094 
00096     void ClearLayers();
00097 
00101     int GetLayerCount() const;
00102 
00108     int GetLayerCount(KFbxLayerElement::ELayerElementType pType,  bool pUVCount=false) const;
00109 
00114     KFbxLayer* GetLayer(int pIndex);
00115 
00120     KFbxLayer const* GetLayer(int pIndex) const;
00121 
00128     KFbxLayer* GetLayer(int pIndex, KFbxLayerElement::ELayerElementType pType, bool pIsUV=false);
00129 
00136     KFbxLayer const* GetLayer(int pIndex, KFbxLayerElement::ELayerElementType pType, bool pIsUV=false) const;
00137 
00146     int GetLayerIndex(int pIndex, KFbxLayerElement::ELayerElementType pType, bool pIsUV=false) const;
00147 
00154     int GetLayerTypedIndex(int pGlobalIndex, KFbxLayerElement::ELayerElementType pType, bool pIsUV=false);
00156 
00161     bool ConvertDirectToIndexToDirect(int pLayer);
00162 
00164 
00165 
00166 
00167 
00168 
00169 
00171 
00172 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00173 
00174     int  GTC(kUInt i, int j);
00175     void* GT (int  i,    kUInt l, int j); 
00176     int  AT (void* t,    kUInt l, int j);
00177     int  GTI(char const* n, kUInt l, int j);
00178     int  GMC(kUInt i, void* n = NULL);
00179     void* GM (int  i,    kUInt l, void* n = NULL);
00180     int  AM (void* m,    kUInt l, void* n = NULL, bool b = false);
00181     int  GMI(char const* n, kUInt l, void* d = NULL);
00182 
00183     int AddToLayerElementsList(KFbxLayerElement* pLEl);
00184     void RemoveFromLayerElementsList(KFbxLayerElement* pLEl);
00185 
00186 protected:
00187 
00188     KFbxLayerContainer(KFbxSdkManager& pManager, char const* pName);
00189     virtual void Destruct(bool pRecursive, bool pDependents);
00190 
00191     void CopyLayers(KFbxLayerContainer const* pLayerContainer);
00192     KFbxLayerContainer& operator=(KFbxLayerContainer const& pLayerContainer);
00193 
00194     virtual void SetDocument(KFbxDocument* pDocument);
00195     virtual bool ConnecNotify (KFbxConnectEvent const &pEvent);
00196 
00197     KArrayTemplate<KFbxLayer*> mLayerArray;
00198     KArrayTemplate<KFbxLayerElement*> mLayerElementsList;
00199 
00200     friend class KFbxScene;
00201     friend class KFbxGeometryConverter;
00202 
00203 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00204 
00205 };
00206 
00207 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00208 
00209 #endif // FBXFILESDK_KFBXPLUGINS_KFBXLAYERCONTAINER_H
00210