diff options
| author | Max-001 <80035972+Max-001@users.noreply.github.com> | 2024-10-02 16:21:01 +0200 | 
|---|---|---|
| committer | Max-001 <80035972+Max-001@users.noreply.github.com> | 2024-10-02 16:21:01 +0200 | 
| commit | 3e99a6fe36e63a1e14ba62f2a6e5a3827484e4e6 (patch) | |
| tree | b548b5815921a6918c4f4b0303cd0208a18fb93d /mwe | |
| parent | 7fc607bc74e0be80b1668032348459399c311898 (diff) | |
DeleteAllComponents created
Diffstat (limited to 'mwe')
| -rw-r--r-- | mwe/ecs-homemade/inc/ComponentManager.h | 12 | ||||
| -rw-r--r-- | mwe/ecs-homemade/inc/ComponentManager.hpp | 12 | ||||
| -rw-r--r-- | mwe/ecs-homemade/src/ComponentManager.cpp | 8 | ||||
| -rw-r--r-- | mwe/ecs-homemade/src/main.cpp | 2 | 
4 files changed, 29 insertions, 5 deletions
| diff --git a/mwe/ecs-homemade/inc/ComponentManager.h b/mwe/ecs-homemade/inc/ComponentManager.h index 763c28e..893aa56 100644 --- a/mwe/ecs-homemade/inc/ComponentManager.h +++ b/mwe/ecs-homemade/inc/ComponentManager.h @@ -18,12 +18,16 @@ public:      ComponentManager& operator=(ComponentManager&&) = delete;	//Singleton  	template <typename T, typename... Args> -	void AddComponent(std::uint32_t id, Args&&... args);	//Add a component -	//TODO: void DeleteAllComponentsOfId(std::uint32_t id);	//Deletes all components of a specific id -	//TODO: void DeleteAllComponents();	//Deletes all components +	void AddComponent(std::uint32_t id, Args&&... args);	//Add a component of a specific type +	template <typename T> +	void DeleteComponentsById(std::uint32_t id);	//Deletes all components of a specific type and id +	template <typename T> +	void DeleteComponents();	//Deletes all components of a specific type +	void DeleteAllComponentsOfId(std::uint32_t id);	//Deletes all components of a specific id +	void DeleteAllComponents();	//Deletes all components  	template <typename T> -    std::vector<std::reference_wrapper<T>> GetComponentsByID(std::uint32_t id) const;	//Get a vector<> of all components at specific id +    std::vector<std::reference_wrapper<T>> GetComponentsByID(std::uint32_t id) const;	//Get a vector<> of all components at specific type and id  	template <typename T>  	std::vector<std::pair<std::reference_wrapper<T>, std::uint32_t>> GetComponentsByType() const;	//Get a vector<> of all components of a specific type diff --git a/mwe/ecs-homemade/inc/ComponentManager.hpp b/mwe/ecs-homemade/inc/ComponentManager.hpp index 03135a8..18bd548 100644 --- a/mwe/ecs-homemade/inc/ComponentManager.hpp +++ b/mwe/ecs-homemade/inc/ComponentManager.hpp @@ -15,6 +15,16 @@ void ComponentManager::AddComponent(std::uint32_t id, Args&&... args) {  }  template <typename T> +void ComponentManager::DeleteComponentsById(std::uint32_t id) { + +} + +template <typename T> +void ComponentManager::DeleteComponents() { + +} + +template <typename T>  std::vector<std::reference_wrapper<T>> ComponentManager::GetComponentsByID(std::uint32_t id) const {      std::type_index type = typeid(T);	//Determine the type of T (this is used as the key of the unordered_map<>) @@ -62,5 +72,5 @@ std::vector<std::pair<std::reference_wrapper<T>, std::uint32_t>> ComponentManage          }      } -    return componentVector; +    return componentVector;	//Return the vector<>  } diff --git a/mwe/ecs-homemade/src/ComponentManager.cpp b/mwe/ecs-homemade/src/ComponentManager.cpp index 287da38..cca84bc 100644 --- a/mwe/ecs-homemade/src/ComponentManager.cpp +++ b/mwe/ecs-homemade/src/ComponentManager.cpp @@ -7,3 +7,11 @@ ComponentManager& ComponentManager::GetInstance() {  }  ComponentManager::ComponentManager() {} + +void ComponentManager::DeleteAllComponentsOfId(std::uint32_t id) { + +} + +void ComponentManager::DeleteAllComponents() { +	mComponents.clear(); +} diff --git a/mwe/ecs-homemade/src/main.cpp b/mwe/ecs-homemade/src/main.cpp index 9e230e5..df229a2 100644 --- a/mwe/ecs-homemade/src/main.cpp +++ b/mwe/ecs-homemade/src/main.cpp @@ -99,6 +99,8 @@ int main() {  	}  	std::cout << std::endl; +	ComponentManager::GetInstance().DeleteAllComponents(); +  	std::cout << "Finding all rigidbodies of all entities for the second time (after changing mMass to -1)" << std::endl;  	std::vector<std::pair<std::reference_wrapper<Rigidbody>, std::uint32_t>> rigidBodies2 = ComponentManager::GetInstance().GetComponentsByType<Rigidbody>();  	for(auto& [rigidbody2, id2] : rigidBodies2) { |