- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxexternaldocreflistener.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_FILEIO_EXTERNAL_DOCREF_LISTENER_H_
    00014 #define _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/core/fbxevent.h>
    00019 #include <fbxsdk/core/fbxlistener.h>
    00020 #include <fbxsdk/core/base/fbxstring.h>
    00021
    00022 #include <fbxsdk/fbxsdk_nsbegin.h>
    00023
    00024 class FbxObject;
    00025 class FbxDocument;
    00026 class FbxManager;
    00027
    00031 struct FBXSDK_DLL FbxExternalDocumentInfo
    00032 {
    00033     FbxString mDocumentName;
    00034     FbxString mClassName;
    00035     FbxString mParentFullName;
    00036     FbxString mFilePathUrl;
    00037 };
    00038
    00042 class FBXSDK_DLL FbxEventReferencedDocument : public FbxEvent<FbxEventReferencedDocument>, public FbxExternalDocumentInfo
    00043 {
    00044     FBXSDK_EVENT_DECLARE(FbxEventReferencedDocument);
    00045 public:
    00046     FbxEventReferencedDocument() {}
    00047 };
    00048
    00049
    00050 class FBXSDK_DLL FbxExternalDocRefListenerData;
    00051
    00062 class FBXSDK_DLL FbxExternalDocRefListener : public FbxListener
    00063 {
    00064 public:
    00071     FbxExternalDocRefListener( FbxManager & pManager, const FbxString & pDocFilePath );
    00072     virtual ~FbxExternalDocRefListener();
    00073
    00078     virtual void SetDocumentFilePath( const FbxString & pDocFilePath );
    00079
    00084     virtual bool AreAllExternalDocumentsStillValid() const;
    00085
    00086     //
    00091     virtual bool WereAllExternalDocumentsValid() const;
    00092
    00095     virtual void UnloadExternalDocuments();
    00096
    00097     // External document reference event handler.
    00098     //
    00099     // Operation: calls FindDocument() to find the specified external document
    00100     //            and if not found calls LoadDocument() either directly,
    00101     //            if it has not parent, or via ConnectToParentLibrary().
    00102     //            If its parent cannot be found, it's added to the dangling
    00103     //            document list (and it is not loaded until it's parent is found).
    00104     //            After, it tries to resolve dangling documents by calling
    00105     //            TryConnectingDanglingLibraries().
    00116     virtual void HandleEvent(const FbxEventReferencedDocument * pEvent);
    00117
    00118 protected:
    00123     virtual FbxString MakeFilenameAbsolute(const FbxString & pFilename) const;
    00125     virtual FbxDocument * FindDocument( const FbxString & pPathToDoc );
    00127     virtual FbxDocument * LoadDocument(FbxObject * pParent, const FbxString & pClassName, const FbxString & pFilename);
    00129     virtual bool ConnectToParentLibrary(const FbxExternalDocumentInfo &);
    00131     virtual void TryConnectingDanglingLibraries();
    00132
    00133 private:
    00134     FbxExternalDocRefListenerData * mData;
    00135 };
    00136
    00137 #include <fbxsdk/fbxsdk_nsend.h>
    00138
    00139 #endif /* _FBXSDK_FILEIO_EXTERNAL_DOCREF_LISTENER_H_ */