#pragma once #include "Components.h" #include "ContiguousContainer.h" class ComponentManager { public: static ComponentManager& GetInstance(); //Singleton ComponentManager(const ComponentManager&) = delete; //Singleton ComponentManager(ComponentManager&&) = delete; //Singleton ComponentManager& operator=(const ComponentManager&) = delete; //Singleton ComponentManager& operator=(ComponentManager&&) = delete; //Singleton template<typename... Args> void addSpriteComponent(Args&&... args); template<typename... Args> void addRigidbodyComponent(Args&&... args); template<typename... Args> void addColiderComponent(Args&&... args); std::vector<std::reference_wrapper<Sprite>> getAllSpriteReferences(); std::vector<std::reference_wrapper<Rigidbody>> getAllRigidbodyReferences(); std::vector<std::reference_wrapper<Colider>> getAllColiderReferences(); private: static ComponentManager mInstance; //Singleton ComponentManager(); //Singleton ContiguousContainer<Sprite> mSpriteContainer; ContiguousContainer<Rigidbody> mRigidbodyContainer; ContiguousContainer<Colider> mColiderContainer; }; #include "ComponentManager.hpp"