1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
5 #include <IExportManager.h>
7 typedef std::vector
<IExporter
*> TExporters
;
8 typedef std::map
<CBaseObject
*, int> TObjectMap
;
10 class SANDBOX_API CExportManager
: public IExportManager
15 virtual ~CExportManager();
18 //! return true if succeed, otherwise false
19 virtual bool RegisterExporter(IExporter
* pExporter
);
21 virtual IExporter
* GetExporterForExtension(const char* szExtension
) const override
;
23 //! Export specified geometry
24 //! return true if succeed, otherwise false
25 bool Export(const char* defaultName
, const char* defaultExt
= "", const char* defaultPath
= "", bool isSelectedObjects
= true,
26 bool isSelectedRegionObjects
= false, bool isTerrain
= false, bool isOccluder
= false, bool bAnimationExport
= false);
28 //! Add to Export Data geometry from selected objects
29 //! return true if succeed, otherwise false
30 bool AddSelectedObjects();
32 bool AddSelectedEntityObjects();
34 //! Add to Export Data geometry from objects inside selected region volume
35 //! return true if succeed, otherwise false
36 bool AddSelectedRegionObjects();
38 //! Add to Export Data terrain geometry
39 //! return true if succeed, otherwise false
42 //! Export to file collected data, using specified exporter throughout the file extension
43 //! return true if succeed, otherwise false
44 bool ExportToFile(const char* filename
, bool bClearDataAfterExport
= true);
46 bool ImportFromFile(const char* filename
);
47 const SExportData
& GetData() const { return m_data
; }
49 //! Exports the stat obj to the obj file specified
50 //! returns true if succeeded, otherwise false
51 virtual bool ExportSingleStatObj(IStatObj
* pStatObj
, const char* filename
);
54 void AddMesh(SExportObject
* pObj
, const IIndexedMesh
* pIndMesh
, Matrix34A
* pTm
= 0);
55 bool AddStatObj(SExportObject
* pObj
, IStatObj
* pStatObj
, Matrix34A
* pTm
= 0);
56 bool AddCharacter(SExportObject
* pObj
, ICharacterInstance
* pCharacter
, Matrix34A
* pTm
= 0);
57 bool AddMeshes(SExportObject
* pObj
);
58 bool AddObject(CBaseObject
* pBaseObj
);
60 bool AddOcclusionObjects();
61 bool IsNotChildOfGroup(CBaseObject
* pObj
);
62 void SolveHierarchy();
64 void AddPosRotScale(SExportObject
* pObj
, const CBaseObject
* pBaseObj
);
65 void AddEntityData(SExportObject
* pObj
, EAnimParamType dataType
, const float fValue
, const float fTime
);
67 bool IsDuplicateObjectBeingAdded(const string
& newObject
);
71 TExporters m_exporters
;
76 TObjectMap m_objectMap
;
77 bool m_bAnimationExport
;
79 CBaseObject
* m_pBaseObj
;