Brenta Engine
1.0
Loading...
Searching...
No Matches
system.hpp
1
/*
2
* MIT License
3
*
4
* Copyright (c) 2024 Giovanni Santini
5
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to deal
8
* in the Software without restriction, including without limitation the rights
9
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
* copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
all
15
* copies or substantial portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
* SOFTWARE.
24
*
25
*/
26
27
#pragma once
28
29
#include <tuple>
30
#include <typeindex>
31
#include <vector>
32
33
namespace
Brenta
34
{
35
36
namespace
ECS
37
{
38
59
template
<
typename
... T>
struct
System
60
{
61
using
dependencies = std::tuple<T...>;
62
virtual
void
run(std::vector<Entity> e)
const
{};
63
};
64
78
template
<
typename
... T>
struct
RegisteredSystems
79
{
80
using
systems = std::tuple<T...>;
81
};
82
87
#define REGISTER_SYSTEMS(...) \
88
void World::RunSystems() \
89
{ \
90
typedef RegisteredSystems<__VA_ARGS__>::systems registered_systems; \
91
const registered_systems systems; \
92
for_each(systems); \
93
}
94
95
}
// namespace ECS
96
97
}
// namespace Brenta
Brenta::ECS::RegisteredSystems
Registered Systems Type.
Definition
system.hpp:79
Brenta::ECS::System
System type.
Definition
system.hpp:60
ecs
headers
system.hpp
Generated by
1.10.0