31 #include "Utilities/STL/MxHashMap.h" 32 #include "Utilities/String/String.h" 33 #include "Utilities/AbstractFactory/AbstractFactory.h" 34 #include "Utilities/ECS/ComponentView.h" 42 using FactoryMap = MxHashMap<StringId, std::aligned_storage_t<FactorySize>>;
44 inline static FactoryMap* factories =
nullptr;
49 if (factories->find(T::ComponentId) == factories->end())
53 return *
reinterpret_cast<FactoryImpl<T>*
>(&(*factories)[T::ComponentId]);
59 return GetFactory<T>().
template GetPool<T>();
68 template<
typename T,
typename... Args>
69 static auto CreateComponent(Args&&... args)
71 UUID uuid = UUIDGenerator::Get();
72 auto& pool = Get<T>();
73 size_t index = pool.Allocate(uuid, std::forward<Args>(args)...);
80 Get<T>().Deallocate(resource.GetHandle());
85 factories =
new FactoryMap();
88 static FactoryMap* GetImpl()
93 static void Clone(FactoryMap* other)
Definition: AbstractFactory.h:61
Definition: AbstractFactory.h:423
Definition: ComponentView.h:42
Definition: ComponentFactory.h:38
Definition: AbstractFactory.h:399
Definition: Application.cpp:49