1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-02 08:57:44 +00:00
sapphire/src/tools/pcb_reader/exportmgr.h

53 lines
1.2 KiB
C
Raw Normal View History

#ifndef EXPORTMGR_H
#define EXPORTMGR_H
#include "exporter.h"
#include "navmesh_exporter.h"
#include "obj_exporter.h"
#include "threadpool.h"
class ExportMgr
{
public:
ExportMgr( unsigned int maxJobs = 0 )
{
m_threadpool.addWorkers( maxJobs );
}
~ExportMgr()
{
waitForTasks();
}
void exportZone(const ExportedZone& zone, ExportFileType exportFileTypes)
{
m_threadpool.queue( [zone, exportFileTypes]()
{
if( exportFileTypes & ExportFileType::WavefrontObj )
ObjExporter::exportZone( zone );
if( exportFileTypes & ExportFileType::Navmesh )
NavmeshExporter::exportZone( zone );
} );
}
void exportGroup( const std::string& zoneName, const ExportedGroup& group, ExportFileType exportFileTypes )
{
if( exportFileTypes & ExportFileType::WavefrontObj )
{
m_threadpool.queue( [zoneName, group](){ ObjExporter::exportGroup( zoneName, group ); } );
}
// if( exportFileTypes & ExportFileType::Navmesh )
// {
// m_threadpool.queue( [zoneName, group](){ NavmeshExporter::exportGroup( zoneName, group ); } );
// }
}
void waitForTasks()
{
m_threadpool.complete();
}
private:
ThreadPool m_threadpool;
};
#endif