diff options
Diffstat (limited to 'mwe')
| -rw-r--r-- | mwe/ecs-homemade/inc/ComponentManager.hpp | 8 | ||||
| -rw-r--r-- | mwe/ecs-homemade/src/main.cpp | 4 | 
2 files changed, 9 insertions, 3 deletions
| diff --git a/mwe/ecs-homemade/inc/ComponentManager.hpp b/mwe/ecs-homemade/inc/ComponentManager.hpp index e6523ca..75b2ab1 100644 --- a/mwe/ecs-homemade/inc/ComponentManager.hpp +++ b/mwe/ecs-homemade/inc/ComponentManager.hpp @@ -18,7 +18,13 @@ template <typename T>  void ComponentManager::DeleteComponentsById(std::uint32_t id) {  	std::type_index type = typeid(T);	//Determine the type of T (this is used as the key of the unordered_map<>) -	 +	if (mComponents.find(type) != mComponents.end()) {	//Find the type (in the unordered_map<>) +		std::vector<std::vector<std::unique_ptr<Component>>>& componentArray = mComponents[type];	//Get the correct vector<> + +        if (id < componentArray.size()) {	//Make sure that the id (that we are looking for) is within the boundaries of the vector<> +            componentArray[id].clear();	//Clear the whole vector<> of this specific type and id +        } +	}  }  template <typename T> diff --git a/mwe/ecs-homemade/src/main.cpp b/mwe/ecs-homemade/src/main.cpp index e1ca9e9..f0b94f0 100644 --- a/mwe/ecs-homemade/src/main.cpp +++ b/mwe/ecs-homemade/src/main.cpp @@ -69,8 +69,8 @@ int main() {  	}  	std::cout << std::endl; -	ComponentManager::GetInstance().DeleteComponents<Sprite>(); -	gameObect5.AddComponent<Sprite>(); +	ComponentManager::GetInstance().DeleteComponentsById<Sprite>(gameObect2.mId); +	gameObect2.AddComponent<Sprite>();  	std::cout << "Finding all rigidbodies of entity 3" << std::endl;  	std::vector<std::reference_wrapper<Rigidbody>> rigidbodyOfEntity3 = ComponentManager::GetInstance().GetComponentsByID<Rigidbody>(gameObect3.mId); |