Brenta Engine 1.2
Loading...
Searching...
No Matches
gui.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#ifdef BRENTA_USE_IMGUI
9
10#include <brenta/frame_buffer.hpp>
11#include <brenta/subsystem.hpp>
12
13#include <imgui.h>
14#include <imgui_impl_glfw.h>
15#include <imgui_impl_opengl3.h>
16
17namespace brenta
18{
19
26class gui : public subsystem
27{
28public:
29
30 class builder;
31
32 static const std::string subsystem_name;
33
34 // Subsystem interface
35 std::expected<void, subsystem::error> initialize() override;
36 std::expected<void, subsystem::error> terminate() override;
37 std::string name() override;
38 bool is_initialized() override;
39
40 // Costructors / destructors
41 gui() = default;
42 ~gui() = default;
43
44 // Member functions
45
46 static gui &instance();
47
52 static void new_frame(types::framebuffer *fb, std::string name = "Game");
57 static void render();
58
59private:
60
61 static bool initialized;
62
63};
64
66{
67public:
68
69 builder() = default;
70 ~builder() = default;
71
72 brenta::subsystem &build() override;
73
74};
75
76} // namespace brenta
77
78#endif // BRENTA_USE_IMGUI
Gui class.
Definition gui.hpp:27
std::string name() override
Returns the name of the sybsystem.
Definition gui.cpp:64
static void render()
Render the gui To be called at each frame after rendering.
Definition gui.cpp:113
bool is_initialized() override
Returns true if the subsystem is initialized.
Definition gui.cpp:69
static void new_frame(types::framebuffer *fb, std::string name="Game")
Start a new frame To be called at each frame before rendering.
Definition gui.cpp:84
Builder interface.
Definition subsystem.hpp:49
Subsystem interface.
Definition subsystem.hpp:22