20 template<
typename ComponentType>
21 void RegisterComponent() {
22 SetupComponentFn setupComponentFn =
nullptr;
24 setupComponentFn = ComponentType::Construct;
27 DestroyComponentFn destroyComponentFn =
nullptr;
29 destroyComponentFn = ComponentType::Destroy;
33 ComponentType::GetComponentHashString(),
37 &ECS::ClearComponents<ComponentType>,
38 &ECS::CreateComponent<ComponentType>,
39 &ECS::RemoveComponent<ComponentType>,
40 &ECS::HasComponent<ComponentType>,
41 &ECS::TryGetComponent<ComponentType>,
42 &ECS::GetComponentReflectionData<ComponentType>,
43 &ECS::CopyRegistryComponents<ComponentType>
48 template<
typename ComponentType>
49 void UnregisterComponent() {
52 if (worldContextManager !=
nullptr) {
53 for (
auto& worldContext : *worldContextManager) {
54 entt::registry& registry = worldContext->GetEntityRegistry();
55 registry.clear<ComponentType>();
59 auto comp = componentFunctionsList.find(ComponentType::GetComponentHashString());
60 if (comp != componentFunctionsList.end()) {
61 componentFunctionsList.erase(comp);
81 using ComponentMap = std::unordered_map<Grindstone::HashedString, ComponentFunctions>;
82 virtual ComponentMap::iterator begin();
83 virtual ComponentMap::const_iterator begin()
const;
84 virtual ComponentMap::iterator end();
85 virtual ComponentMap::const_iterator end()
const;
87 ComponentMap componentFunctionsList;
Definition WorldContextManager.hpp:12
Definition WorldContextSet.hpp:11