From 80a1307e1e4c4f749d0d885c65c07b5508a73fac Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Sat, 7 Dec 2024 18:35:32 +0100 Subject: add update feature pages --- src/doc/feature/script_ecs.dox | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/doc/feature/script_ecs.dox (limited to 'src/doc/feature/script_ecs.dox') 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 +#include +#include + +using namespace crepe; + +class MyScript : public Script { + void show_self() { + Metadata & own_metadata = get_component(); + Log::logf("My name is {}", own_metadata.name); + } + + void list_enemies() { + RefVector enemies = get_components_by_tag("enemy"); + Log::logf("There are {} enemies:", enemies.size()); + for (const Metadata & enemy : enemies) { + Log::logf("- {}", enemy.name); + } + } +}; +``` + +*/ +} -- cgit v1.2.3