Gaia-ECS v0.9.3
A simple and powerful entity component system
Loading...
Searching...
No Matches
component_setter.h
1#pragma once
2#include "gaia/config/config.h"
3
4#include <cstdint>
5
6#include "gaia/ecs/chunk.h"
7#include "gaia/ecs/component.h"
8#include "gaia/ecs/component_getter.h"
9
10namespace gaia {
11 namespace ecs {
16 template <typename T>
17 decltype(auto) mut() {
18 return const_cast<Chunk*>(m_pChunk)->template set<T>(m_row);
19 }
20
25 template <typename T, typename U = typename actual_type_t<T>::Type>
26 ComponentSetter& set(U&& value) {
27 mut<T>() = GAIA_FWD(value);
28 return *this;
29 }
30
34 template <typename T>
35 decltype(auto) mut(Entity type) {
36 return const_cast<Chunk*>(m_pChunk)->template set<T>(m_row, type);
37 }
38
44 template <typename T>
45 ComponentSetter& set(Entity type, T&& value) {
46 mut<T>(type) = GAIA_FWD(value);
47 return *this;
48 }
49
53 template <typename T>
54 decltype(auto) smut() {
55 return const_cast<Chunk*>(m_pChunk)->template sset<T>(m_row);
56 }
57
62 template <typename T, typename U = typename actual_type_t<T>::Type>
63 ComponentSetter& sset(U&& value) {
64 smut<T>() = GAIA_FWD(value);
65 return *this;
66 }
67
72 template <typename T>
73 decltype(auto) smut(Entity type) {
74 return const_cast<Chunk*>(m_pChunk)->template sset<T>(type);
75 }
76
82 template <typename T>
83 ComponentSetter& sset(Entity type, T&& value) {
84 smut<T>(type) = GAIA_FWD(value);
85 return *this;
86 }
87 };
88 } // namespace ecs
89} // namespace gaia
Definition chunk.h:29
Checks if endianess was detected correctly at compile-time.
Definition bitset.h:9
Definition component_getter.h:11
Definition component_setter.h:12
decltype(auto) mut()
Returns a mutable reference to component.
Definition component_setter.h:17
decltype(auto) mut(Entity type)
Returns a mutable reference to component.
Definition component_setter.h:35
ComponentSetter & sset(Entity type, T &&value)
Sets the value of the component without triggering a world version update.
Definition component_setter.h:83
ComponentSetter & set(U &&value)
Sets the value of the component.
Definition component_setter.h:26
decltype(auto) smut()
Returns a mutable reference to component without triggering a world version update.
Definition component_setter.h:54
decltype(auto) smut(Entity type)
Returns a mutable reference to component without triggering a world version update.
Definition component_setter.h:73
ComponentSetter & sset(U &&value)
Sets the value of the component without triggering a world version update.
Definition component_setter.h:63
ComponentSetter & set(Entity type, T &&value)
Sets the value of the component type.
Definition component_setter.h:45
Definition id.h:225