Loading...
Searching...
No Matches
Cube.h
Go to the documentation of this file.
1#pragma once
2#include <memory>
3#include <string>
4#include <vector>
5
6#include "hellfire/graphics/Vertex.h"
7
8namespace hellfire
9{
10 class Mesh;
11 class Material;
12 class Scene;
13 class Entity;
14 using EntityID = uint32_t;
15
16 class Cube
17 {
18 public:
19 struct Config {
20 glm::vec3 color = glm::vec3(1.0f);
21 std::shared_ptr<Material> material = nullptr;
24 glm::vec3 scale = glm::vec3(1.0f);
25 };
26
27 static EntityID create(Scene* scene, const std::string& name, const Config& config);
28 static std::shared_ptr<Mesh> create_mesh();
29 static void get_cube_data(std::vector<Vertex>& vertices, std::vector<unsigned int>& indices,
30 const glm::vec3& color = glm::vec3(1.0f));
31
32 private:
33 static const std::vector<float> vertices_;
34 static const std::vector<float> uvs_;
35 static const std::vector<unsigned int> indices_;
36
37 Cube() = delete;
38 };
39}
static void get_cube_data(std::vector< Vertex > &vertices, std::vector< unsigned int > &indices, const glm::vec3 &color=glm::vec3(1.0f))
Definition Cube.cpp:117
static const std::vector< unsigned int > indices_
Definition Cube.h:35
static EntityID create(Scene *scene, const std::string &name, const Config &config)
Definition Cube.cpp:81
static const std::vector< float > vertices_
Definition Cube.h:33
static const std::vector< float > uvs_
Definition Cube.h:34
static std::shared_ptr< Mesh > create_mesh()
Definition Cube.cpp:110
TransformComponent * transform()
Definition Entity.cpp:42
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 scale
Definition Cube.h:24
glm::vec3 rotation
Definition Cube.h:23
std::shared_ptr< Material > material
Definition Cube.h:21
glm::vec3 color
Definition Cube.h:20
glm::vec3 position
Definition Cube.h:22