diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-25 20:46:32 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-25 20:46:32 +0200 |
commit | 195f7770c42aa1ed1052725dde26699d2ecc689f (patch) | |
tree | 0c0504f4750947ac158f500d6f4fff4ed83d63d8 /src/crepe/api/Script.hpp | |
parent | e7377daf2fe3b759fbbf7e57f88c412c3b1cf011 (diff) |
implement get_component for scripts
Diffstat (limited to 'src/crepe/api/Script.hpp')
-rw-r--r-- | src/crepe/api/Script.hpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/crepe/api/Script.hpp b/src/crepe/api/Script.hpp new file mode 100644 index 0000000..8ddd344 --- /dev/null +++ b/src/crepe/api/Script.hpp @@ -0,0 +1,26 @@ +#pragma once + +#include "../ComponentManager.h" + +#include "Script.h" +#include "BehaviorScript.h" + +namespace crepe::api { + +template<typename T> +T & Script::get_component() { + std::vector<std::reference_wrapper<T>> all_components = this->get_components<T>(); + if (all_components.size() < 1) + throw nullptr; // TODO + + return all_components.back().get(); +} + +template<typename T> +std::vector<std::reference_wrapper<T>> Script::get_components() { + ComponentManager & mgr = ComponentManager::get_instance(); + return mgr.get_components_by_id<T>(this->parent->game_object_id); +} + +} + |