From f0effabc7555c08bec9a4284baad8c4e1c61c110 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Wed, 20 Nov 2024 18:09:06 +0100 Subject: clean up CollisionTest --- src/crepe/api/BehaviorScript.h | 7 +- src/crepe/api/BehaviorScript.hpp | 6 +- src/test/CollisionTest.cpp | 212 ++++++++++++++------------------------- src/test/main.cpp | 2 +- 4 files changed, 83 insertions(+), 144 deletions(-) diff --git a/src/crepe/api/BehaviorScript.h b/src/crepe/api/BehaviorScript.h index 9d85d4c..d556fe5 100644 --- a/src/crepe/api/BehaviorScript.h +++ b/src/crepe/api/BehaviorScript.h @@ -39,11 +39,14 @@ public: * \brief Set the concrete script of this component * * \tparam T Concrete script type (derived from \c crepe::Script) + * \tparam Args Arguments for concrete script constructor + * + * \param args Arguments for concrete script constructor (forwarded using perfect forwarding) * * \returns Reference to BehaviorScript component (`*this`) */ - template - BehaviorScript & set_script(); + template + BehaviorScript & set_script(Args &&... args); protected: //! Script instance diff --git a/src/crepe/api/BehaviorScript.hpp b/src/crepe/api/BehaviorScript.hpp index d80321d..6bd123d 100644 --- a/src/crepe/api/BehaviorScript.hpp +++ b/src/crepe/api/BehaviorScript.hpp @@ -9,11 +9,11 @@ namespace crepe { -template -BehaviorScript & BehaviorScript::set_script() { +template +BehaviorScript & BehaviorScript::set_script(Args &&... args) { dbg_trace(); static_assert(std::is_base_of::value); - Script * s = new T(); + Script * s = new T(std::forward(args)...); s->game_object_id = this->game_object_id; s->component_manager_ref = &this->component_manager; this->script = std::unique_ptr