Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
ImporterManager.hpp
1#pragma once
2
3#include <Common/Editor/Importer.hpp>
4#include <Editor/AssetRegistry.hpp>
5#include <EngineCore/Assets/AssetManager.hpp>
6
7#include <filesystem>
8#include <map>
9#include <string>
10
11namespace Grindstone::Importers {
12 class ImporterManager {
13 public:
14 struct ImporterData {
15 Grindstone::Editor::ImporterVersion importerVersion;
16 Grindstone::Editor::ImporterFactory factory;
17 };
18
19 ImporterManager();
20 bool Import(const std::filesystem::path& path);
21 void AddImporterFactory(const std::string& extension, Grindstone::Editor::ImporterFactory importerToAdd, Grindstone::Editor::ImporterVersion importerVersion);
22 void RemoveImporterFactoryByExtension(const std::string& extension);
23
24 Grindstone::Editor::ImporterVersion GetImporterVersion(const std::string& extension);
25 Grindstone::Editor::ImporterVersion GetImporterVersion(const std::filesystem::path& path) const;
26 bool HasImporter(const std::string& extension) const;
27 bool HasImporter(const std::filesystem::path& path) const;
28 Grindstone::Editor::ImporterFactory GetImporterFactoryByExtension(const std::string& extension) const;
29 Grindstone::Editor::ImporterFactory GetImporterFactoryByPath(const std::filesystem::path& path) const;
30 private:
31 std::map<std::string, ImporterData> extensionsToImporterFactories;
32 };
33}