diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-12-14 12:08:08 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-12-14 12:08:08 +0100 |
commit | 721262b488bcb67d5f19583c4a523d6ad1b54354 (patch) | |
tree | c7904833a8541fec32b53bd31c1475df2c03da49 /src/doc/feature/script_ecs.dox | |
parent | 1623663c6e2e8f33f84b37b9f6bd968c8bc6c92d (diff) | |
parent | 5ae2b3c2f7dc207980c6d475e54fa2c5242c560d (diff) |
Merge branch 'loek/doxygen' into demo
Diffstat (limited to 'src/doc/feature/script_ecs.dox')
-rw-r--r-- | src/doc/feature/script_ecs.dox | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/doc/feature/script_ecs.dox b/src/doc/feature/script_ecs.dox new file mode 100644 index 0000000..bbe1abc --- /dev/null +++ b/src/doc/feature/script_ecs.dox @@ -0,0 +1,57 @@ +// vim:ft=doxygen +namespace crepe { +/** + +\defgroup feature_script_ecs Using ECS inside Script +\ingroup feature +\brief Query the component manager inside a concrete Script + +Script provides several methods to request references to components during +runtime. These methods may be used in cases where it is either not practical or +impossible to manually pass the references required to implement a certain +behavior. + +\see Script +\see ComponentManager + +\par Example + +\note This example assumes you already have a concrete Script. If not, read +\"\ref feature_script\" first. + +The component manager can be queried for components inside Script using the +following methods: + +- For requesting components on the same GameObject as this Script instance: + - Script::get_component(): \copybrief Script::get_component + - Script::get_components(): \copybrief Script::get_components +- For requesting components in the current Scene: + - Script::get_components_by_id(): \copybrief Script::get_components_by_id + - Script::get_components_by_name(): \copybrief Script::get_components_by_name + - Script::get_components_by_tag(): \copybrief Script::get_components_by_tag + +```cpp +#include <crepe/util/Log.h> +#include <crepe/api/Script.h> +#include <crepe/api/Metadata.h> + +using namespace crepe; + +class MyScript : public Script { + void show_self() { + Metadata & own_metadata = get_component<Metadata>(); + Log::logf("My name is {}", own_metadata.name); + } + + void list_enemies() { + RefVector<Metadata> enemies = get_components_by_tag<Metadata>("enemy"); + Log::logf("There are {} enemies:", enemies.size()); + for (const Metadata & enemy : enemies) { + Log::logf("- {}", enemy.name); + } + } +}; +``` + +*/ +} |