Brenta Engine 1.2
Loading...
Searching...
No Matches
ecs.hpp
1// SPDX-License-Identifier: MIT
2// Author: Giovanni Santini
3// Mail: giovanni.santini@proton.me
4// Github: @San7o
5
6#ifdef BRENTA_USE_ECS
7
8#pragma once
9
10#include <brenta/subsystem.hpp>
11#include <viotecs/viotecs.hpp>
12
13namespace brenta
14{
15
16class ecs : public subsystem
17{
18public:
19
20 class builder;
21 static const std::string subsystem_name;
22
23 // Subsystem interface
24 std::expected<void, subsystem::error> initialize() override;
25 std::expected<void, subsystem::error> terminate() override;
26 std::string name() override;
27 bool is_initialized() override;
28
29 // Constructors / destructors
30 ecs() = default;
31 ~ecs() = default;
32
33 // Member functions
34
35 static ecs &instance();
36
37private:
38
39 static bool initialized;
40
41};
42
43class ecs::builder : public subsystem::builder
44{
45public:
46
47 builder() = default;
48 ~builder() = default;
49
50 subsystem &build();
51};
52
53} // namespace brenta
54
55#endif // BRENTA_USE_ECS