aboutsummaryrefslogtreecommitdiff
path: root/src/example/components_internal.cpp
diff options
context:
space:
mode:
authorWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-10-23 21:15:58 +0200
committerWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-10-23 21:15:58 +0200
commitb5e83d076f356c6d01b7bbc1f033db4850356c0d (patch)
treec4b11f86c6ab1685e46fab9d674377a39e612fd7 /src/example/components_internal.cpp
parent51c8a51b53a850265955a3e4bc45b40ad3f8c477 (diff)
parent04a040e28ade412ea5b1767bf77eed3956121973 (diff)
pull origin master
Diffstat (limited to 'src/example/components_internal.cpp')
-rw-r--r--src/example/components_internal.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/example/components_internal.cpp b/src/example/components_internal.cpp
new file mode 100644
index 0000000..e2169e1
--- /dev/null
+++ b/src/example/components_internal.cpp
@@ -0,0 +1,63 @@
+/** \file
+ *
+ * Standalone example for usage of the internal ECS
+ */
+
+#include <cassert>
+#include <chrono>
+
+#include <crepe/Component.h>
+#include <crepe/ComponentManager.h>
+
+#include <crepe/api/Collider.h>
+#include <crepe/api/GameObject.h>
+#include <crepe/api/Rigidbody.h>
+#include <crepe/api/Sprite.h>
+
+#include <crepe/util/log.h>
+
+using namespace crepe::api;
+using namespace crepe;
+using namespace std;
+
+#define OBJ_COUNT 100000
+
+int main() {
+ dbg_trace();
+
+ auto & mgr = ComponentManager::get_instance();
+
+ auto start_adding = chrono::high_resolution_clock::now();
+
+ GameObject * game_object[OBJ_COUNT];
+
+ for (int i = 0; i < OBJ_COUNT; ++i) {
+ game_object[i] = new GameObject(i, "Name", "Tag", 0);
+
+ game_object[i]->add_component<Sprite>("test");
+ game_object[i]->add_component<Rigidbody>(0, 0, i);
+ game_object[i]->add_component<Collider>(i);
+ }
+
+ auto stop_adding = chrono::high_resolution_clock::now();
+
+ auto sprites = mgr.get_components_by_type<Sprite>();
+ for (auto sprite : sprites) {
+ assert(sprite.get().path == "test");
+ }
+
+ auto stop_looping = chrono::high_resolution_clock::now();
+
+ for (int i = 0; i < OBJ_COUNT; ++i) {
+ delete game_object[i];
+ }
+
+ auto add_time = chrono::duration_cast<chrono::microseconds>(stop_adding
+ - start_adding);
+ auto loop_time = chrono::duration_cast<chrono::microseconds>(stop_looping
+ - stop_adding);
+ printf("add time: %ldus\n", add_time.count());
+ printf("loop time: %ldus\n", loop_time.count());
+
+ return 0;
+}