Brenta Engine 1.2
Loading...
Searching...
No Matches
model_ecs_component.hpp
1// SPDX-License-Identifier: MIT
2// Author: Giovanni Santini
3// Mail: giovanni.santini@proton.me
4// Github: @San7o
5
6#pragma once
7
8#ifndef BRENTA_NO_ECS
9
10#include <brenta/renderer/model.hpp>
11#include <brenta/renderer/renderer.hpp>
12#include <brenta/ecs/ecs.hpp>
13
14#include <tenno/memory.hpp>
15
16namespace brenta
17{
18
19class ModelEcsComponent : public viotecs::Component
20{
21public:
22
23 tenno::shared_ptr<Model> model = nullptr;
24 bool transparent = false;
25
26 ModelEcsComponent() = default;
27 ModelEcsComponent(tenno::shared_ptr<Model> m, bool transparent = false)
28 : model(m), transparent(transparent) {}
29 ModelEcsComponent(Model&& m, bool transparent = false)
30 : transparent(transparent)
31 {
32 this->model = tenno::make_shared<Model>(tenno::move(m));
33 }
34 ModelEcsComponent(Model::Builder& m, bool transparent = false)
35 : transparent(transparent)
36 {
37 this->model = tenno::make_shared<Model>(m.build());
38 }
39
40 inline void draw(const glm::mat4& world_matrix)
41 {
42 Renderer::submit({
43 world_matrix,
44 this->model
45 },
46 this->transparent);
47 }
48
49};
50
51} // namespace brenta
52
53#endif // BRENTA_NO_ECS