Brenta Engine 1.2
Loading...
Searching...
No Matches
ecs.cpp
1// SPDX-License-Identifier: MIT
2// Author: Giovanni Santini
3// Mail: giovanni.santini@proton.me
4// Github: @San7o
5
6#include <brenta/ecs/ecs.hpp>
7#include <brenta/logger.hpp>
8
9#ifndef BRENTA_NO_ECS
10
11using namespace brenta;
12
13//
14// Static variables
15//
16
17const std::string Ecs::subsystem_name = "ecs";
18bool Ecs::initialized = false;
19
20//
21// Subsystem interface
22//
23
24std::expected<void, Subsystem::Error> Ecs::initialize()
25{
26 if (this->is_initialized()) return {};
27
28 viotecs::World::init();
29
30 Ecs::initialized = true;
31 INFO("{}: initialized", Ecs::subsystem_name);
32 return {};
33}
34
35std::expected<void, Subsystem::Error> Ecs::terminate()
36{
37 if (!this->is_initialized()) return {};
38
39 viotecs::World::destroy();
40
41 Ecs::initialized = true;
42 INFO("{}: terminated", Ecs::subsystem_name);
43 return {};
44}
45
46std::string Ecs::name()
47{
48 return Ecs::subsystem_name;
49}
50
51bool Ecs::is_initialized()
52{
53 return Ecs::initialized;
54}
55
56//
57// Member functions
58//
59
60Ecs &Ecs::instance()
61{
62 static Ecs _ecs;
63 return _ecs;
64}
65
66//
67// Builder
68//
69
70Subsystem &Ecs::Builder::build()
71{
72 return Ecs::instance();
73}
74
75#endif // BRENTA_NO_ECS