Brenta Engine 1.2
Loading...
Searching...
No Matches
camera_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/camera.hpp>
11#include <brenta/ecs/ecs.hpp>
12
13#include <tenno/memory.hpp>
14
15namespace brenta
16{
17
18class FrameBuffer;
19
20class CameraEcsComponent : public viotecs::Component
21{
22public:
23
24 tenno::shared_ptr<Camera> camera = nullptr;
25 tenno::weak_ptr<FrameBuffer> fb;
26
27 CameraEcsComponent() = default;
28 CameraEcsComponent(tenno::shared_ptr<Camera> cam, tenno::weak_ptr<FrameBuffer> fb)
29 : camera(cam), fb(fb) {}
30 CameraEcsComponent(const Camera &cam, tenno::weak_ptr<FrameBuffer> fb)
31 : fb(fb)
32 {
33 this->camera = tenno::make_shared<Camera>(cam);
34 }
35 CameraEcsComponent(Camera::Builder &cam, tenno::weak_ptr<FrameBuffer> fb)
36 : fb(fb)
37 {
38 this->camera = tenno::make_shared<Camera>(cam.build());
39 }
40};
41
42} // namespace brenta
43
44#endif // BRENTA_NO_ECS