Loading...
Searching...
No Matches
Quad.h
Go to the documentation of this file.
1#pragma once
2#include <memory>
3#include <string>
4#include <vector>
5#include <glm/glm.hpp>
6
7#include "hellfire/ecs/Entity.h"
8
9
10struct Vertex;
11
12namespace hellfire
13{
14 class Scene;
15 class Mesh;
16 class Material;
17
18 class Quad
19 {
20 public:
21 struct Config {
22 glm::vec3 color = glm::vec3(1.0f);
23 std::shared_ptr<Material> material = nullptr;
26 glm::vec3 scale = glm::vec3(1.0f);
27 };
28
29 static EntityID create(Scene* scene, const std::string& name, const Config& config = Config{});
30 static std::shared_ptr<Mesh> create_mesh();
31 static void get_quad_data(std::vector<Vertex>& vertices, std::vector<unsigned int>& indices,
32 const glm::vec3& color = glm::vec3(1.0f));
33
34 private:
35 static const std::vector<float> vertices_;
36 static const std::vector<float> uvs_;
37 static const std::vector<unsigned int> indices_;
38
39 Quad() = delete;
40 };
41
42}
TransformComponent * transform()
Definition Entity.cpp:42
static void get_quad_data(std::vector< Vertex > &vertices, std::vector< unsigned int > &indices, const glm::vec3 &color=glm::vec3(1.0f))
Definition Quad.cpp:69
static const std::vector< float > uvs_
Definition Quad.h:36
static EntityID create(Scene *scene, const std::string &name, const Config &config=Config{})
Definition Quad.cpp:33
static const std::vector< unsigned int > indices_
Definition Quad.h:37
static std::shared_ptr< Mesh > create_mesh()
Definition Quad.cpp:62
static const std::vector< float > vertices_
Definition Quad.h:35
Manages a collection of entities and their hierarchical relationships.
Definition Scene.h:24
Entity * get_entity(EntityID id)
Retrieves an entity by its ID.
Definition Scene.cpp:81
EntityID create_entity(const std::string &name="GameObject")
Creates a new entity in the scene.
Definition Scene.cpp:29
void set_position(float x, float y, float z)
void set_rotation(float x, float y, float z)
Definition Vertex.h:5
glm::vec3 rotation
Definition Quad.h:25
glm::vec3 color
Definition Quad.h:22
glm::vec3 scale
Definition Quad.h:26
std::shared_ptr< Material > material
Definition Quad.h:23
glm::vec3 position
Definition Quad.h:24