Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
Mesh3dImporter.hpp
1#pragma once
2
3#include <string>
4#include <vector>
5#include <map>
6
7#include <Common/Formats/Model.hpp>
8#include <Common/Graphics/Formats.hpp>
9#include <EngineCore/Assets/AssetImporter.hpp>
10#include "Mesh3dAsset.hpp"
11
12namespace Grindstone {
13 namespace GraphicsAPI {
14 class Buffer;
15 }
16
17 class EngineCore;
18
19 class Mesh3dImporter : public SpecificAssetImporter<Mesh3dAsset, AssetType::Mesh3d> {
20 public:
21 Mesh3dImporter(EngineCore* engineCore);
22 virtual ~Mesh3dImporter() override;
23
24 virtual void* LoadAsset(Uuid uuid) override;
25 virtual void QueueReloadAsset(Uuid uuid) override;
26 void PrepareLayouts();
27 virtual void OnDeleteAsset(Grindstone::Mesh3dAsset& asset) override;
28 private:
29 uint64_t GetTotalFileSize(Formats::Model::V1::Header& header);
30 bool ImportModelFile(Mesh3dAsset& mesh);
31 void LoadMeshImportSubmeshes(
32 Mesh3dAsset& mesh,
34 char*& sourcePtr
35 );
36 void LoadMeshImportVertices(
37 Mesh3dAsset& mesh,
39 char*& sourcePtr,
40 std::vector<GraphicsAPI::Buffer*>& vertexBuffers
41 );
42 void LoadMeshImportIndices(
43 Mesh3dAsset& mesh,
45 char*& sourcePtr,
46 GraphicsAPI::Buffer*& indexBuffer
47 );
48 public:
49 EngineCore* engineCore;
50 private:
52
53 enum class Mesh3dLayoutIndex {
54 Position = 0,
55 Normal,
56 Tangent,
57 Uv0,
58 Uv1
59 };
60 };
61}
Definition EngineCore.hpp:58
Definition Buffer.hpp:56
Definition Uuid.hpp:7
Definition Mesh3dAsset.hpp:26