viotecs
1.0
Loading...
Searching...
No Matches
system.hpp
Go to the documentation of this file.
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
viotecs
34
{
35
56
template
<
typename
... T>
struct
system
57
{
58
using
dependencies
= std::tuple<T...>;
59
virtual
void
run
(std::vector<entity_t> e)
const
{};
60
};
61
75
template
<
typename
... T>
struct
registered_systems
76
{
77
using
systems
= std::tuple<T...>;
78
};
79
84
#define REGISTER_SYSTEMS(...) \
85
void viotecs::world::run_systems() \
86
{ \
87
typedef registered_systems<__VA_ARGS__>::systems registered_systems; \
88
const registered_systems systems; \
89
for_each(systems); \
90
}
91
92
}
// namespace viotecs
viotecs
Definition
component.hpp:32
viotecs::registered_systems
Registered Systems Type.
Definition
system.hpp:76
viotecs::registered_systems::systems
std::tuple< T... > systems
Definition
system.hpp:77
viotecs::system
System type.
Definition
system.hpp:57
viotecs::system::dependencies
std::tuple< T... > dependencies
Definition
system.hpp:58
viotecs::system::run
virtual void run(std::vector< entity_t > e) const
Definition
system.hpp:59
include
viotecs
system.hpp
Generated by
1.10.0