aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/BehaviorScript.h
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-12 22:43:32 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-12 22:43:32 +0100
commit3e94ecb3dac5003a3d58210ed1a4d1f1cb2083d1 (patch)
tree67c3e1c122652ae09e58e7de49db668e252c4730 /src/crepe/api/BehaviorScript.h
parentf2509e89c02894ebd3ad992324eb300103621d26 (diff)
add script unit tests + major refactoring
Diffstat (limited to 'src/crepe/api/BehaviorScript.h')
-rw-r--r--src/crepe/api/BehaviorScript.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/crepe/api/BehaviorScript.h b/src/crepe/api/BehaviorScript.h
index 6b1fec7..8d21a72 100644
--- a/src/crepe/api/BehaviorScript.h
+++ b/src/crepe/api/BehaviorScript.h
@@ -12,19 +12,35 @@ class Script;
class BehaviorScript : public Component {
protected:
- friend class crepe::ComponentManager;
using Component::Component;
+ //! Only ComponentManager is allowed to instantiate BehaviorScript
+ friend class ComponentManager;
public:
virtual ~BehaviorScript() = default;
public:
+ /**
+ * \brief Set the concrete script of this component
+ *
+ * \tparam T Concrete script type (derived from \c crepe::Script)
+ *
+ * \returns Reference to BehaviorScript component (`*this`)
+ */
template <class T>
BehaviorScript & set_script();
protected:
- friend class crepe::ScriptSystem;
+ //! ScriptSystem needs direct access to the script instance
+ friend class ScriptSystem;
+ //! Flag to indicate if script->init() has been called already
+ bool initialized = false;
std::unique_ptr<Script> script = nullptr;
+
+private:
+ //! Script accesses the component manager directly via its parent
+ // (BehaviorScript) reference
+ friend class Script;
};
} // namespace crepe