Khaotic Engine Reborn
Loading...
Searching...
No Matches
component.h
1#pragma once
2#include <memory>
3#include <typeindex>
4#include <typeinfo>
5
9namespace ecs {
10
11// Classe de base pour tous les composants
12class Component {
13public:
14 Component() = default;
15 virtual ~Component() = default;
16
17 // Empêcher la copie
18 Component(const Component&) = delete;
19 Component& operator=(const Component&) = delete;
20
21 // Permettre le déplacement
22 Component(Component&&) = default;
23 Component& operator=(Component&&) = default;
24
28 virtual void Initialize() {}
29
34 virtual void Update(float deltaTime) {}
35
36 // virtual std::string Serialize() {}
37 // virtual void Deserialize(const std::string& data) {}
38};
39
43using ComponentPtr = std::shared_ptr<Component>;
44
48using ComponentTypeID = std::type_index;
49
53template<typename T>
55 static_assert(std::is_base_of<Component, T>::value, "T must derive from Component");
56 return std::type_index(typeid(T));
57}
58
59} // namespace ecs
virtual void Update(float deltaTime)
Definition component.h:34
virtual void Initialize()
Definition component.h:28
Definition component.h:9
std::shared_ptr< Component > ComponentPtr
Definition component.h:43
std::type_index ComponentTypeID
Definition component.h:48
ComponentTypeID GetComponentTypeID()
Definition component.h:54