diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-04 08:28:18 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-04 08:28:18 +0100 |
commit | 06f65659fc6ffde7cabd2135040cbfbf089e5a24 (patch) | |
tree | e3570bea52b87b6919550ee81d17927ccbc11cc5 /src/example/script.cpp | |
parent | 128969619a22dfc17a9ea35335c0d21c6ad0c954 (diff) | |
parent | 6aa8fdd04728b6a499f526de727514ae3d0490b4 (diff) |
merge `origin/master` into `master`
Diffstat (limited to 'src/example/script.cpp')
-rw-r--r-- | src/example/script.cpp | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/src/example/script.cpp b/src/example/script.cpp index 28605c7..cda9591 100644 --- a/src/example/script.cpp +++ b/src/example/script.cpp @@ -3,31 +3,52 @@ * Standalone example for usage of the script component and system */ -#include <crepe/util/log.h> -#include <crepe/ScriptSystem.h> #include <crepe/ComponentManager.h> -#include <crepe/GameObject.h> +#include <crepe/ScriptSystem.h> +#include <crepe/util/log.h> #include <crepe/api/BehaviorScript.h> +#include <crepe/api/Config.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Script.h> +#include <crepe/api/Transform.h> using namespace crepe; +using namespace crepe::api; using namespace std; -class MyScript : public api::BehaviorScript { +// Unrelated stuff that is not part of this POC +int _ = [] () { + // Show dbg_trace() output + auto & cfg = api::Config::get_instance(); + cfg.log.level = util::LogLevel::TRACE; + + return 0; // satisfy compiler +}(); + + + +// User-defined script: +class MyScript : public Script { void update() { - dbg_trace(); + // Retrieve component from the same GameObject this script is on + Transform & test = get_component<Transform>(); + dbg_logf("Transform(%.2f, %.2f)", test.position.x, test.position.y); } }; int main() { - dbg_trace(); - + // Create game object with Transform and BehaviorScript components auto obj = GameObject(0, "name", "tag", 0); - obj.add_component<MyScript>(); + obj.add_component<Transform>(Point { .x = 1.2, .y = 3.4, }, 0, 0); + obj.add_component<BehaviorScript>().set_script<MyScript>(); + // Get ScriptSystem singleton instance (this would normally be done from the + // game loop) auto & sys = ScriptSystem::get_instance(); - sys.update(); // -> MyScript::update + // Update all scripts. This should result in MyScript::update being called + sys.update(); - return 0; + return EXIT_SUCCESS; } |