Major - ECS - V12.0.0
This commit is contained in:
40
enginecustom/src/inc/system/ecs/component.h
Normal file
40
enginecustom/src/inc/system/ecs/component.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#pragma once
|
||||
#include <memory>
|
||||
#include <typeindex>
|
||||
#include <typeinfo>
|
||||
|
||||
namespace ecs {
|
||||
|
||||
// Classe de base pour tous les composants
|
||||
class Component {
|
||||
public:
|
||||
Component() = default;
|
||||
virtual ~Component() = default;
|
||||
|
||||
// Emp<6D>cher la copie
|
||||
Component(const Component&) = delete;
|
||||
Component& operator=(const Component&) = delete;
|
||||
|
||||
// Permettre le d<>placement
|
||||
Component(Component&&) = default;
|
||||
Component& operator=(Component&&) = default;
|
||||
|
||||
// Fonction virtuelle pour initialiser le composant
|
||||
virtual void Initialize() {}
|
||||
|
||||
// Fonction virtuelle pour la mise <20> jour du composant
|
||||
virtual void Update(float deltaTime) {}
|
||||
};
|
||||
|
||||
// Alias utiles
|
||||
using ComponentPtr = std::shared_ptr<Component>;
|
||||
using ComponentTypeID = std::type_index;
|
||||
|
||||
// Fonction pour obtenir l'ID de type d'un composant
|
||||
template<typename T>
|
||||
ComponentTypeID GetComponentTypeID() {
|
||||
static_assert(std::is_base_of<Component, T>::value, "T must derive from Component");
|
||||
return std::type_index(typeid(T));
|
||||
}
|
||||
|
||||
} // namespace ecs
|
||||
Reference in New Issue
Block a user