StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
Model.hpp
1#pragma once
2#ifdef StevEngine_MODELS
3#include "assimp/scene.h"
4
5#include "main/ResourceManager.hpp"
6#include "utilities/Vertex.hpp"
7#include "visuals/Material.hpp"
8
9#include <vector>
10
11namespace StevEngine::Utilities {
15 struct Mesh {
16 std::vector<Vertex> vertices;
17 std::vector<uint32_t> indices;
18
19 #ifdef StevEngine_SHOW_WINDOW
27 Mesh(std::vector<Vertex> vertices, std::vector<uint32_t> indices, Visuals::Material material)
29 #else
35 Mesh(std::vector<Vertex> vertices, std::vector<uint32_t> indices)
37 #endif
38 };
39
46 class Model {
47 public:
52 Model(const Resources::Resource& file);
53
54 #ifdef StevEngine_SHOW_WINDOW
57 #endif
58
60 const std::string path;
61
66 std::vector<Mesh> GetMeshes() const;
67
68 private:
69 const aiScene* assimpScene;
70 std::vector<Mesh> meshes;
71 };
72}
73#endif
Container for loaded resource data.
Definition ResourceManager.hpp:11
const std::string path
Path to model file.
Definition Model.hpp:60
std::vector< Mesh > GetMeshes() const
Get all meshes in model.
Definition Model.cpp:108
Model(const Resources::Resource &file)
Load model from resource.
Definition Model.cpp:21
bool hasMaterials
Whether model has material data.
Definition Model.hpp:56
Material properties for rendering.
Definition Material.hpp:14
std::vector< uint32_t > indices
Vertex indices.
Definition Model.hpp:17
Visuals::Material material
Mesh material.
Definition Model.hpp:20
Mesh(std::vector< Vertex > vertices, std::vector< uint32_t > indices, Visuals::Material material)
Create mesh with material.
Definition Model.hpp:27
std::vector< Vertex > vertices
Mesh vertices.
Definition Model.hpp:16