!XT (Code) Update copyright headers in Code/Sandbox.
[CRYENGINE.git] / Code / Sandbox / EditorQt / Export / ExportManager.h
blob9bea4cec2607a168b45214baf207a635fcf1fe3d
1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
5 #include <IExportManager.h>
7 typedef std::vector<IExporter*> TExporters;
8 typedef std::map<CBaseObject*, int> TObjectMap;
10 class SANDBOX_API CExportManager : public IExportManager
12 public:
14 CExportManager();
15 virtual ~CExportManager();
17 //! Register exporter
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
40 bool AddTerrain();
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);
53 private:
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);
59 bool AddVegetation();
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);
69 private:
71 TExporters m_exporters;
72 SExportData m_data;
73 bool m_isPrecaching;
74 bool m_isOccluder;
75 float m_fScale;
76 TObjectMap m_objectMap;
77 bool m_bAnimationExport;
79 CBaseObject* m_pBaseObj;