// vim:ft=doxygen namespace crepe { /** \defgroup feature_script Scripting basics \ingroup feature \brief Create a concrete Script and attach it to a GameObject Scripts can be used to implement game behavior, and allow arbitrary code to run as part of the game loop. Scripts are implemented as derivative classes of Script, which are added to \ref GameObject "game objects" using the \ref BehaviorScript \ref Component "component". \see Script \see BehaviorScript \see GameObject \par Example \note This example assumes you already have a GameObject. If not, read \"\ref feature_gameobject\" first. First, define a class (anywhere) that inherits from Script. The Script class acts as an interface, and has two functions (\ref Script::init "\c init()" and \ref Script::update "\c update()"), which *may* be implemented (they are empty by default). From now on, this derivative class will be referred to as a *concrete script*. ```cpp #include #include class MyScript : public crepe::Script { void init() { // called once } void update() { // called on fixed update } }; ``` After defining a concrete script, it can be instantiated and attached to \ref feature_gameobject "game objects" during \ref feature_scene "scene initialization" using a BehaviorScript component: ```cpp using namespace crepe; GameObject obj; // Create a BehaviorScript component to hold MyScript BehaviorScript & behavior_script = obj.add_component(); // Instantiate (and attach) MyScript to behavior_script behavior_script.set_script(); ``` The above can also be done in a single call for convenience: ```cpp obj.add_component().set_script(); ``` */ }